bsica. Este modulo preconfigurado tiene como fin el de ser una tarjeta de comunicacin con el computador y nuestras aplicaciones electrnicas. El microcontrolador de pinguino cuenta con un programa ya establecido, siendo este modulo como una caja negra para el usuario, donde este solo debe saber que terminales sern las entradas, que terminales sern las salidas digitales y como se acceden por medio de un programa en el PC. El modulo esta configurado de manera que desde el PC se pueda enviar y recibir datos, por medio del puerto US. El usuario cuenta con un conjunto de funciones en el lenguaje de programacin Processing para el uso de este modulo, permitiendo enfocarse en programa que controlara la aplicacin y su interfa! grfica de usuario. "ambi#n este conjunto de funciones de alto nivel pueden ser llevadas a cualquier otro lenguaje de programacin dada la versatilidad de Pinguino. Caractersticas del modulo para aplicaciones con lgica digital bsica con el PIC 18F455. Para la reali!acin de los proyectos aqu$ propuestos el modulo tendr las siguientes entradas y salidas predefinidas, seg%n sean los requerimientos se puede cambiar esta configuracin reprogramando el dispositivo. 12 salidas digitales 9 entradas digitales 8 entradas ADC 1 salida anloga En la &igura ' se ilustran que pines se disponen como salidas digitales, como entradas entradas digitales y conversin anlogo a digital ()C. Programacin en Processing. Processing es un lenguaje de programacin basado en *ava, con la caracter$stica de facilitar el desarrollo de interfaces grficas y animaciones adems de contar con la facilidad que proporciona *ava en la programacin +eb. PINGUINO : Implementacin De Un Modulo Bsico Para Comunicacin Con El Pc Por : Julio Faio De !a Cru" Gome"# $%ttp:&& micropin'uino #lo'spot#com La comunicacin entre dispositivos electrnicos y el PC es de uso como en nuestros das, nada tan fcil como conectar nuestro dispositivo en el puerto USB y empezarlo a utilizar. En electrnica un dispositivo conectado al PC puede ser empleado para la captura y visualizacin de datos, as, de por !ue no disponer de una tar"eta electrnica para tal fin #. Es a!u donde la tar"eta pin$uino viene al rescate, confi$urndose como un dispositivo %sico de comunicacin y control di$ital de $ran utilidad para la realizacin de nuestros proyecto electrnicos. Pinguino tiene como fin el de ser una tarjeta de comunicacin USB con el computador que sea verstil como sistema para la realizacin de aplicaciones electrnicas Figura 1. Configuracin de los terminales Figura 2. Encendido y apagado de un led. !ncender " apagar un led. Este primer ejemplo mostrara como se controla el encendido y apagado de un led desde Processing, para este ejemplo se reali!a el montaje que se muestra en la Figura 2. En el cuadro Cdigo 1 se muestran las lineas de correspondientes en Processing. !#emplo de lectura de las entradas digitales. El ejemplo a continuacin muestra como se controla el encendido y apagado de , leds por medio de activacin de alguno de los , pulsadores tal como se muestra en la &igura -. En el cuadro Cdigo . se muestran las lineas de correspondientes en Processing. !#emplo de lectura de la entrada $%C de la tar#eta. El ejemplo a continuacin muestra el valor capturado por el conversor anlogo digital cuando se varia el potencimetro el montaje correspondiente se muestra en la Figura 3. En el cuadro Cdigo 3 se muestran las lineas de correspondientes en Processing. Cdigo 1. Encender y apagar un led import hypermedia.pinguino.*; Pinguino pinguino; void setup(){ Pinguino.log( true ); pinguino = new Pinguino( this ); } void draw(){ pinguino.digitalWrite(0,Pinguino.!W); delay("000); pinguino.digitalWrite(0,Pinguino.#$%#); delay("000); } Cdigo 2. Lectura de entradas digitales. import hypermedia.pinguino.*; Pinguino pinguino; int nPulsador"; int nPulsador&; int nPulsador'; int nPulsador(; void setup(){ Pinguino.log( true ); pinguino = new Pinguino( this ); } void draw(){ nPulsador"=pinguino.digital)ead("0); nPulsador&=pinguino.digital)ead("&); nPulsador'=pinguino.digital)ead(&"); nPulsador'=pinguino.digital)ead(&&); pinguino.digitalWrite(0,Pinguino.!W); pinguino.digitalWrite(",Pinguino.!W); pinguino.digitalWrite(&,Pinguino.!W); pinguino.digitalWrite(',Pinguino.!W); i*(nPulsador"==0){ println(+Pulsador i,-uierdo esta presionado +); pinguino.digitalWrite(0,Pinguino.#$%#); } i*(nPulsador&==0){ println(+Pulsador arri.a esta presionado +); pinguino.digitalWrite(",Pinguino.#$%# ); } i*(nPulsador'==0){ println(+Pulsador dere/ho esta presionado +); pinguino.digitalWrite(&,Pinguino.#$%# ); } i*(nPulsador(==0){ println(+Pulsador a.a0o esta presionado +); pinguino.digitalWrite(',Pinguino.#$%# ); } } " Funciones implementadas en Processing. (l final de esta gu$a se encuentra una tabla que enumera y /ace una descripcin de las diferentes funciones empleadas para manejar la tarjeta Pinguino desde Processing. &eferencias. http:// micro pinguino.blogspot.com http://ubaa.net/shared/processing/pinguino/ http://jpmandon.blogspot.com/ Figura 3. Montaje multiproposito. Cdigo 3. Lectura del conversor anlogo digital import hypermedia.pinguino.*; Pinguino pinguino; int n1d/; void setup(){ Pinguino.log( true ); pinguino = new Pinguino( this ); } void draw(){ n1d/=pinguino.analog)ead("'); println(+2l 3alor es4 + 5 n1d/); } Funciones Funcin escripcin !inta"is Ejemplo analogRead(terminal) 0etorna el dato le$do de un terminal especifico del microcontrolador, los valores estn comprendidos en el rango de 1 y '1.-. terminal indica el terminal del cual se desea leer el dato anlogo. Esta funcin retorna un valor comprendido entre 1 y '1.-, si /ay un error retorna 2' import /ypermedia.pinguino.34 55 conectar a la tarjeta Pinguino pinguino 6 ne+ Pinguino7t/is84 55 lee el valor en el terminal '- int value 6 pinguino.analog0ead7 '- 84 55 imprimir valor leido en consola println7 value 84 analogWrite(terminal!alor8 Env$a un valor anlogo 7P9:8 a un terminal especifico del microcontrolador, los valores estn comprendidos entre 1 y '1.-. terminal indica el terminal del microcontrolador al que se enviara el dato. !alor indica que valor sera enviado, los valores estn comprendidos entre 1 y '1.-. Esta funcin no retorna ning%n valor. import /ypermedia.pinguino.34 55 conectar a la tarjeta Pinguino pinguino 6 ne+ Pinguino7t/is84 55 envia el dato '11 al terminal '' pinguino.analog9rite7 '', '11 84 clear() Coloca en 1 todos los terminales del microcontrolador. esta funcin no retorna ning%n valor digitalRead(terminal) ;ee el estado digital de un terminal especifico del microcontrolador terminal indica el numero del terminal del pic que se va a leer su estado digital 1 7;<98 o '7=>?=8. 2' en caso de un error. import /ypermedia.pinguino.34 55 conectar a la tarjeta Pinguino pinguino 6 ne+ Pinguino7t/is84 55 lee el valor digital del terminal 1 int value 6 pinguino.digital0ead7 1 84 55 imprime el valor leido en consola println7 value 84 digitalWrite(terminal!alor) Escribe un dato digital 1 7(*<8 o ' 7(;"<8 a un terminal especifico del microcontrolador. terminal indica a terminal se escribir el dato digital. !alor indica que estado lgico se escribir en el terminal, para indicar un estado bajo se env$a 1 o ;<9 y un estado alto ' o =>?=. Esta funcin no retorna ning%n valor import /ypermedia.pinguino.34 55 conectar a la tarjeta Pinguino pinguino 6 ne+ Pinguino7t/is84 55escribir un alto a el terminal 1 pinguino.digital9rite7 1, Pinguino.=>?= 84 log("a#ilitar) Sirve para indicar el estado de cone@in con la tarjeta pinguino. "a#ilitar indica si se /abilita o no los mensajes de estado por consola, para /abilitarlos se coloca true y para des/abilitar se coloca false. Esta funcin no retorna ning%n valor. import /ypermedia.pinguino.34 55 /abilita mensajes de consola Pinguino.log7 true 84 55 conectar a la tarjeta Pinguino pinguino 6 ne+ Pinguino7t/is84 Programa 'ue se descarga en pinguino int i; uchar todo,mode,pin,value; unsigned char buffer[2]; int temp; int endstring; void clear(); void setup() { for( i=0; i<; i!! ) pin"ode( i, #$%&$% ); for( i=2'; i<=2(; i!! ) pin"ode( i, )*&$% ); for( i=2+; i<=2; i!! ) pin"ode( i, #$%&$% ); clear(); , void loop() { if ( $-./available() ) { if ($-./read()==0!0){ todo =$-./read(); if ( todo==010 ) clear(); if ( todo==020 ) { mode = $-./read(); pin = $-./read(); value = $-./read(); if ( mode==030 ) digital2rite( pin, value ); if ( mode==040 ) { temp=value!($-./read()52+6); analog2rite( pin, temp ); , , if ( todo==070 ) { mode = $-./read(); pin = $-./read(); if ( mode==030 ) { buffer[0] = digital7ead( pin ); $-./send( buffer, ' ); , if ( mode==040 ) { temp = analog7ead( pin ); buffer[0]=temp; buffer[']=temp82+6; $-./send( buffer, 2 ); , , endstring=$-./read(); , , , void clear() { for( i=0; i<; i!! ) { digital2rite( i, 9#2 ); , for( i=2+; i<2:; i!! ) { digital2rite( i, 9#2 ); , ,