Ich habe die Anweisungen auf dieser Website erfolgreich befolgt:
http://www.doctormonk.com/2012/04/raspberry-pi-and-arduino.html
und ich konnte die Kommunikation zwischen dem pi und meinem Arudino Mega genau so herstellen, wie es auf der Website angegeben ist.
Anstatt jedoch eine Ganzzahl zu senden, die angibt, wie oft die LED blinkt, möchte ich ASCII-Text wie folgt senden:
"5 METER VORWÄRTS BEWEGEN", "LINKS DREHEN", "10 METER VORWÄRTS BEWEGEN" vom Pi zum Arduino.
Ich habe folgenden Code geschrieben:
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);
}
}
Ich habe den obigen Code erfolgreich auf meinem Arduino Mega 2560 geflasht.
Ich wechselte zu meinem Python-Terminal auf dem Raspberry Pi und tippte in der Konsole Folgendes ein:
import serial
ser = serial.Serial('/dev/ttyACM1',9600)
ser.write("MOVE")
Auf dem seriellen Monitor meines Arduino wird Folgendes angezeigt:
Arduino Received: M
Arduino Received: O
Arduino Received: V
Arduino Received: E
Aber was ich will ist:
Arduino Received: MOVE
Wie ändere ich den obigen Code, um alle Zeichen in den inData-Puffer zu bekommen?