Segui as instruções deste site com sucesso:
http://www.doctormonk.com/2012/04/raspberry-pi-and-arduino.html
e pude obter comunicação entre o pi e o meu arudino mega exatamente como o site especifica.
No entanto, em vez de enviar um número inteiro representando o número de vezes que o LED pisca, desejo enviar texto ASCII como:
"Mova 5 metros para a frente", "Vire à esquerda", "Mova 10 metros para trás" para o arduino a partir do pi.
Eu escrevi o seguinte 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);
}
}
Pisquei o código acima com êxito no meu Arduino Mega 2560.
Mudei para o meu terminal python no Raspberry Pi e no console digitei:
import serial
ser = serial.Serial('/dev/ttyACM1',9600)
ser.write("MOVE")
O que é exibido no monitor serial do meu Arduino é o seguinte:
Arduino Received: M
Arduino Received: O
Arduino Received: V
Arduino Received: E
Mas o que eu quero é:
Arduino Received: MOVE
Como altero o código acima para obter todos os caracteres no buffer inData?