Documente Academic
Documente Profesional
Documente Cultură
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
// ------ 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
{ 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
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
Comunicacin serial con lazarus Como Hacer Una Presentacin Al Estilo Prezi Con Impress.js
Montaje Pinguino
El ratn en Processing
Nuevo Pinguino X4
Ejemplos de procontroll
Ciclos en processing
mesa multitouch
Maquina CNC
Robot omnidireccional
Lineas 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.
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); }