Seguí correctamente las instrucciones de este sitio web:
y pude obtener comunicación entre el pi y mi arudino mega exactamente como lo especifica el sitio web.
Sin embargo, en lugar de enviar un número entero que represente la cantidad de veces que el LED parpadea, 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] = 'import serial
ser = serial.Serial('/dev/ttyACM1',9600)
ser.write("MOVE")
';
Serial.print("Arduino Received: ");
Serial.println(inData);
}
}
He flasheado el código anterior con éxito a mi Arduino Mega 2560.
Cambié a mi terminal python en la Raspberry Pi y en la consola escribí:
Arduino Received: M
Arduino Received: O
Arduino Received: V
Arduino Received: E
Lo que se muestra en el Monitor Serial de mi Arduino es el siguiente:
Arduino Received: MOVE
Pero lo que quiero es:
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] = 'import serial
ser = serial.Serial('/dev/ttyACM1',9600)
ser.write("MOVE")
';
Serial.print("Arduino Received: ");
Serial.println(inData);
}
}
¿Cómo cambio el código anterior para que todos los caracteres entren en el búfer de inData?