Seguí las instrucciones en este sitio web con éxito:
http://www.doctormonk.com/2012/04/raspberry-pi-and-arduino.html
y pude obtener comunicación entre el pi y mi mega arudino exactamente como lo especifica el sitio web.
Sin embargo, en lugar de enviar un número entero que represente la cantidad de veces que parpadea el LED, quiero enviar un texto ASCII como:
"MOVER 5 METROS HACIA ADELANTE", "GIRAR A LA IZQUIERDA", "MOVER 10 METROS HACIA ATRÁS" hacia el arduino desde el pi.
Escribí el siguiente código:
char inData[64];
char inChar=-1;
void setup(){
Serial.begin(9600);
Serial.begin("Waiting for Raspberry Pi to send a signal...\n");
}
void loop(){
byte numBytesAvailable= Serial.available();
// if there is something to read
if (numBytesAvailable > 0){
// store everything into "inData"
int i;
for (i=0;i<numBytesAvailable;i++){
inChar= Serial.read();
inData[i] = inChar;
}
inData[i] = '\0';
Serial.print("Arduino Received: ");
Serial.println(inData);
}
}
Actualicé el código anterior con éxito a mi Arduino Mega 2560.
Cambié a mi terminal de Python en la Raspberry Pi y en la consola escribí:
import serial
ser = serial.Serial('/dev/ttyACM1',9600)
ser.write("MOVE")
Lo que se muestra en el monitor serie de mi Arduino es el siguiente:
Arduino Received: M
Arduino Received: O
Arduino Received: V
Arduino Received: E
Pero lo que quiero es:
Arduino Received: MOVE
¿Cómo cambio el código anterior para obtener todos los caracteres en el búfer inData?