私はこのウェブサイトの指示に成功しました:
http://www.doctormonk.com/2012/04/raspberry-pi-and-arduino.html
そして、ウェブサイトで指定されているとおりに、piとarudino mega間の通信を得ることができました。
ただし、LEDが点滅する回数を表す整数を送信する代わりに、次のようなASCIIテキストを送信します。
「MOVE 5 METERS FORWARD」、「TURN LEFT」、「MOVE 10 METERS BACKWARD」は、piからarduinoに移動します。
次のコードを書きました。
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);
}
}
上記のコードをArduino Mega 2560に正常にフラッシュしました。
Raspberry Piのpythonターミナルに切り替え、コンソールで次のように入力しました。
import serial
ser = serial.Serial('/dev/ttyACM1',9600)
ser.write("MOVE")
Arduinoのシリアルモニターに表示される内容は次のとおりです。
Arduino Received: M
Arduino Received: O
Arduino Received: V
Arduino Received: E
しかし、私が欲しいのは:
Arduino Received: MOVE
上記のコードを変更して、すべての文字をinDataバッファーに入れるにはどうすればよいですか?