Ho seguito con successo le istruzioni su questo sito Web:
http://www.doctormonk.com/2012/04/raspberry-pi-and-arduino.html
e sono stato in grado di ottenere la comunicazione tra il pi e il mio arudino mega esattamente come specificato dal sito web.
Tuttavia, invece di inviare un numero intero che rappresenta il numero di volte in cui il LED lampeggia, voglio inviare un testo ASCII come:
"SPOSTARE 5 METRI AVANTI", "SPOSTARE A SINISTRA", "SPOSTARE 10 METRI INDIETRO" sull'arduino dal pi.
Ho scritto il seguente codice:
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);
}
}
Ho lampeggiato sopra il codice con successo sul mio Arduino Mega 2560.
Sono passato al mio terminale Python sul Raspberry Pi e nella console ho digitato:
import serial
ser = serial.Serial('/dev/ttyACM1',9600)
ser.write("MOVE")
Ciò che viene visualizzato sul mio monitor seriale Arduino è il seguente:
Arduino Received: M
Arduino Received: O
Arduino Received: V
Arduino Received: E
Ma quello che voglio è:
Arduino Received: MOVE
Come posso modificare il codice sopra per inserire tutti i caratteri nel buffer inData?