Sunteți pe pagina 1din 11

Cdigo PIC Encoder en CCS:

The translation could modify the code. Use the code without translating. #Include <18F4550.h> // Usamos el PIC 18F4550, puedes declarar cualquiera de los // 18Fxx5x. #Fuses XT, NOWDT, NOPROTECT, NOLVP, BROWNOUT #use Delay( Clock = 4000000 ) #Byte PortA = 18Fxx5x. #Byte PortB = 18Fxx5x. #Byte PortC = 18Fxx5x. #Byte PortD = 18Fxx5x (Slo 0xF80 0xF81 0xF82 0xF83 40/44 // Direccin del puerto A para la familia // Direccin del puerto B para la familia // Direccin del puerto C para la familia // Direccin del puerto D para la familia // pines). // Direccin del puerto E para la familia

#Byte PortE = 0xF84 18Fxx5x.

// ------ Variable Global -----Int8 x = 0; // decir, 8 bits. // su valor lo // programa principal. // antes la interrupcin //

Declaramos el valor de X como Byte, es Esta variable ha de ser global porque usaremos en la interrupcin y en el Por tanto declaramos esta variable y de "void main".

// --------- Interrupcin --------#INT_EXT // Interrupcin Externa por RB0: Decodificacin de Encoder. Void IntRB0() { // CCS se encarga de desactiva automticamente cualquier interrupcin. // No hace falta guardar contextos de registros. If (Bit_Test(PortB, 0)) subida), { Ext_Int_Edge(H_TO_L); interrupcin por flanco de If (Bit_Test(PortB, 1)) { x++; valor de X. } } Else bajada), // Si RB0 se ha puesto a 1 (flanco de // entonces activar la siguiente // bajada. // Si RB1 est a 1, // entonces incrementar una unidad el

// Si RB0 se ha puesto a 0 (flanco de

{ Ext_Int_Edge(L_TO_H); interrupcin por flanco de // entonces activar la siguiente // subida. If (Bit_Test(PortB, 1)) // Si RB1 est 1, { x--; // entonces decrementar una unidad el valor de X. } } // Al finalizar la interrupcin CCS se encarga de volver a poner automticamente // la badera INTF = 0 ---> borra la interrupcin para poder permitir la siguiente; // no hemos de hacer nada por nuestra parte. } Void Main() // Inicio y configuracin. { Port_B_Pullups(FALSE); // Configuracin para el PIC 18F4550. Setup_ADC_Ports(NO_ANALOGS); // Sin comparadores ni ADCs, todo digital, etc... Setup_adc(ADC_CLOCK_DIV_2); Setup_spi(SPI_SS_DISABLED); Setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); Setup_timer_1(T1_DISABLED); Setup_timer_2(T2_DISABLED,0,1); Setup_comparator(NC_NC_NC_NC); Setup_vref(FALSE); Enable_Interrupts(Int_Ext); de RB0. Ext_Int_Edge(L_TO_H); flanco de subida. Enable_Interrupts(GLOBAL); Set_Tris_A(0b11111111); no usamos el Puerto A. Set_Tris_B(0b11111111); las entradas RB0 y RB1. Set_Tris_C(0b11111111); no usamos el Puerto C. Set_Tris_D(0b00000000); irn a los LEDs). Set_Tris_E(0b11111111); no usamos el Puerto E. // Activar Interrupcin Externa a travs // Inicialmente detectar interrupcin por // Interrupciones Generales Activadas. // Puerto A todo entradas, en este caso // Puerto B todo entradas, slo usamos // Puerto C todo entradas, en este caso // Puerto D todo salidas (8 bits que

// Puerto E todo entradas, en este caso

// ---------- Programa Principial ---------While (True) { PortD = x; los 8 LED. } }

// El valor de X sale por el Puerto D a

Control de sentido de giro y velocidad para un motor DC

En este esquema utilizamos la entrada anloga 13 para leer el valor entregado por el potenciometro y as asignar este valor a la salida PWM del terminal 11. Se lee el estado del pulsador en el terminal 21 configurado como entrada. Con las salidas 0 y 1 controlamos el sentido de giro del motor. Se utiliza para este ejemplo el puente H L298.
#define PIC18F4550 int velocidad; void setup(){ pinMode(21,INPUT); pinMode(0,OUTPUT); pinMode(1,OUTPUT); } void loop(){ velocidad=analogRead(13); if(digitalRead(21)){ digitalWrite(0,LOW); digitalWrite(1,HIGH); analogWrite(11,velocidad); }else{ digitalWrite(0,HIGH); digitalWrite(1,LOW);

analogWrite(11,velocidad); } }

Publicado 13th March 2012 por Julio De La Cruz Etiquetas: Pinguino Robotica

Electrnica Y Programacin

Pinguino RS232

Como reutilizar una cmara web de un porttil daado

comunicacin CDC en windows con Pinguino

Comunicacin Bluetooth serial

Impreso Pinguino 18F2550

Comunicacin RF con los mdulos RWS y TWS

Comunicacin serial con lazarus Como Hacer Una Presentacin Al Estilo Prezi Con Impress.js

Medidor de distancia por ultrasonido HC-SR04 con pinguino

Instalacin De Pinguino En windows 8

Comunicacin serial entre dos computadores

Como hacer mens en Pinguino

Lgica combinatoria con GAL y WinCUPL

Comunicacin de pinguino con processing

Proyecto mecatrnico con pinguino y processing

Manejo Pantalla LCD 1602 en un microcontroaldor

Conexin del max232 en un microcontrolador

Proyecto de curso 801b caracterizacin de un sensor

Evento Kines Art Uniajc

Montaje Pinguino

Estructuras Condicionales en Pseint

El ratn en Processing

Nuevo Pinguino X4

Brazo Robtico y Banda Transportadora

Ejemplo De Una Presentacin Robot Seguidor De Linea

Nuevo controlador para pinguino

Reto PacMan Bot

Ejemplo ciclos en PSEINT

Ejemplos de procontroll parte 3

Ejemplos de Procontroll parte 2

Ejemplos de procontroll

Modificacin control de juego

Ciclos en processing

Como programar una GAL

Como Instalar procontroll en processing

Proyecto de curso S242

Robot con el 16F628A

Gua Pinguino Processing

Trabajos de grado UNIAJC 2012

MT8870 con processing y pinguino

Scilab y Pinguino en Linux

Guia Pinguino CDC

mesa multitouch

Maquina CNC

Robot omnidireccional

Conexiones del PICKit 2

Relleno de figuras geomtricas en processing

Lineas en processing

Ratn y animacin bsica en processing

Rectangulos y elipses en processing

Pinguino RS232

PINGUINO

RS232

Uno de los modos de comunicacin con pinguino es la comunicacin serial asncrona con el protocolo RS232, aunque ya es poco frecuente encontrar computadores con el conector DB9 de comunicacin serial se puede utilizar un adaptador USB RS232. Existen muchos aparatos electrnicos sobre todo de uso industrial o de laboratorio que operan con este protocolo. Tambin la gran mayora de lenguajes de programacin cuentan con libreras para la realizacin de aplicaciones con comunicacin serial asncrona.

Esquema de conexin pinguino con el max232

Publicado 6 days ago por Julio De La Cruz

Etiquetas: Pinguino
#include <16F877.h> #use delay(clock=1000000) #fuses NOWDT,NOPROTECT,NOLVP,NODEBUG,PUT int retardo; void main() { retardo=300; //CON ESTE VALOR SE CAMBIA LA VELOCIDAD DE GIRO DEL MOTOR WHILE(input(PIN_C0)) // INICIALIZO LOS PINES EN VALOR BAJO, PARA QUE EL MOTOR NO SE MUEVA { OUTPUT_LOW(PIN_B0); OUTPUT_LOW(PIN_B1); OUTPUT_LOW(PIN_B2); OUTPUT_LOW(PIN_B3); } do{ if(!input(pin_C0)&&(input(pin_c1))) // GIRO EN UN SENTIDO (GIRO 1) { OUTPUT_LOW(PIN_B0); OUTPUT_HIGH(PIN_B1); OUTPUT_LOW(PIN_B2); OUTPUT_LOW(PIN_B3); delay_ms(retardo); }if(!input(pin_C0)&&(input(pin_c1))) // GIRO EN UN SENTIDO (GIRO 1) { OUTPUT_LOW(PIN_B0); OUTPUT_LOW(PIN_B1); OUTPUT_HIGH(PIN_B2); OUTPUT_LOW(PIN_B3); delay_ms(retardo); }if(!input(pin_C0)&&(input(pin_c1))) // GIRO EN UN SENTIDO (GIRO 1) { OUTPUT_LOW(PIN_B0); OUTPUT_LOW(PIN_B1); OUTPUT_LOW(PIN_B2); OUTPUT_HIGH(PIN_B3); delay_ms(retardo); }if(!input(pin_C0)&&(input(pin_c1))) // GIRO EN UN SENTIDO (GIRO 1) { OUTPUT_HIGH(PIN_B0); OUTPUT_LOW(PIN_B1); OUTPUT_LOW(PIN_B2); OUTPUT_LOW(PIN_B3); delay_ms(retardo); }if(input(pin_C0)&&(!input(pin_c1)))// GIRO EN UN SENTIDO (GIRO 2) { OUTPUT_HIGH(PIN_B0); OUTPUT_LOW(PIN_B1); OUTPUT_LOW(PIN_B2); OUTPUT_LOW(PIN_B3); delay_ms(retardo); }if(input(pin_C0)&&(!input(pin_c1))) // GIRO EN UN SENTIDO (GIRO 2) {

OUTPUT_LOW(PIN_B0); OUTPUT_LOW(PIN_B1); OUTPUT_LOW(PIN_B2); OUTPUT_HIGH(PIN_B3); delay_ms(retardo); }if(input(pin_C0)&&(!input(pin_c1))) // GIRO EN UN SENTIDO (GIRO 2) { OUTPUT_LOW(PIN_B0); OUTPUT_LOW(PIN_B1); OUTPUT_HIGH(PIN_B2); OUTPUT_LOW(PIN_B3); delay_ms(retardo); }if(input(pin_C0)&&(!input(pin_c1))) // GIRO EN UN SENTIDO (GIRO 2) { OUTPUT_LOW(PIN_B0); OUTPUT_HIGH(PIN_B1); OUTPUT_LOW(PIN_B2); OUTPUT_LOW(PIN_B3); delay_ms(retardo); }}while(true); }

S-ar putea să vă placă și