<\/span><\/p>\n[sourcecode language=\u00bbpy\u00bb]<\/p>\n
\/*
\n*
\n* IPHONE+TouchOSC+PROCESSING+XBEE+PINGUINO
\n*
\n* Example to control a remote control card
\n* with all the PINGUINO PIC electronic
\n* And received all the control information
\n* from a XBEE
\n*\/<\/p>\n
uchar key;
\nint i;
\nvoid setup()
\n{
\nfor ( i=0 ; i <8; i++){
\npinMode(i,OUTPUT);
\ndigitalWrite(i,LOW);
\n}
\nSerial.begin(9600);
\n}<\/p>\n
void loop()
\n{
\nif (Serial.available()>0) \/\/only apply if we have information into the serial port { key=Serial.read();
\nif (key==’l’) digitalWrite(4,digitalRead(4)^1);\/\/change the status of port 4 to invert value
\nif (key==’i’) digitalWrite(5,digitalRead(5)^1);\/\/change the status of port 4 to invert value
\nif (key==’b’) digitalWrite(7,digitalRead(7)^1);\/\/change the status of port 4 to invert value
\nif (key==’a’) digitalWrite(0,HIGH); \/\/go a head
\nif (key==’s’) digitalWrite(1,HIGH); \/\/go back
\nif (key==’d’) digitalWrite(2,HIGH); \/\/left
\nif (key==’f’) digitalWrite(3,HIGH); \/\/right
\nif (key==’z’) digitalWrite(0,LOW); \/\/stop move a head
\nif (key==’x’) digitalWrite(1,LOW); \/\/stop move back
\nif (key==’c’) digitalWrite(2,LOW); \/\/stop turn left
\nif (key==’v’) digitalWrite(3,LOW); \/\/stop turn right<\/p>\n
Serial.print("received… OK!!!"); \/\/debug serial answer
\nSerial.print("\\n\\r");
\nSerial.flush();\/\/clear the serial buffer }<\/p>\n
}
\n[\/sourcecode]<\/p>\n
<\/span><\/p>\n <\/span><\/strong><\/p>\n <\/span><\/strong><\/p>\nNOTA: AL ser una comunicaci\u00f3n serie, tenemos que entender que recibir\u00edamos car\u00e1cter tras car\u00e1cter a una velocidad de 9600, para convertir esta comunicaci\u00f3n en multitarea para nuestro pinguino, entonces se nos ocurri\u00f3 cambiar el estado de las puertas digitales con diferentes teclas, por tal motivo si presionamos la tecla \u201ca\u201d elevar\u00edamos el estado de la puerta \u201c0\u201d, y este no bajar\u00eda hasta no recibir un car\u00e1cter \u201cx\u201d.<\/span><\/strong><\/p>\n <\/span><\/strong><\/p>\n <\/span><\/strong><\/p>\n <\/span>\u00bfPor qu\u00e9 hacemos esto? <\/span>B\u00e1sicamente si elevar\u00edamos el estado de alguna puerta \u201csolo al recibir un car\u00e1cter \u201ca\u201d \u201d, cuando querremos ir recto y girar al mismo tiempo, no podr\u00edamos<\/strong>, ya que cuando recibimos el car\u00e1cter \u201ca\u201d el veh\u00edculo circular\u00eda hacia delante, pero en el siguiente siclo si recibi\u00e9ramos un car\u00e1cter \u201cd\u201d (para girar la direcci\u00f3n), al no recibir m\u00e1s el car\u00e1cter \u201ca\u201d el motor se detendr\u00eda y no girar\u00edamos. <\/span><\/em><\/span><\/p>\n <\/span>Esto lo podremos probar mediante una consola serie (RS232 to TTL) conectada directamente con el ping\u00fcino.<\/span><\/em><\/p>\nVerificando que cada vez que enviamos un comando, nos responde la consola con el mensaje \u201creceived\u2026OK!!!\u201d, y al mismo tiempo verificamos la activaci\u00f3n de las salidas digitales, esto se puede hacer con LEDs colocados en cada puerta.<\/span><\/em><\/p>\n<\/a><\/p>\n<\/a><\/p>\n
\n<\/span><\/em><\/p>\n <\/span><\/p>\n <\/span><\/p>\n <\/span><\/p>\n <\/span>Tras verificar que todo funciona utilizando la comunicaci\u00f3n serie tradicional, pasaremos a transformar esta comunicaci\u00f3n a protocolo 802.15.4, para convertir la comunicaci\u00f3n serie v\u00eda cable, en una conexi\u00f3n inal\u00e1mbrica.<\/span><\/p>\n <\/span><\/p>\n
<\/span><\/strong><\/p>\n