ฉันทำตามคำแนะนำในเว็บไซต์นี้เรียบร้อยแล้ว:
http://www.doctormonk.com/2012/04/raspberry-pi-and-arduino.html
และฉันสามารถรับการสื่อสารระหว่าง pi และ mega arudino ของฉันตรงตามที่เว็บไซต์ระบุ
อย่างไรก็ตามแทนที่จะส่งจำนวนเต็มแทนจำนวนครั้งที่ LED กระพริบฉันต้องการส่งข้อความ ASCII เช่น:
"ย้าย 5 เมตรไปข้างหน้า", "เลี้ยวซ้าย", "ย้าย 10 เมตรด้านหลัง" ไปยัง arduino จาก pi
ฉันเขียนรหัสต่อไปนี้:
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 ของฉันสำเร็จแล้ว
ฉันเปลี่ยนไปใช้ terminal ของหลามบน Raspberry Pi และในคอนโซลที่ฉันพิมพ์:
import serial
ser = serial.Serial('/dev/ttyACM1',9600)
ser.write("MOVE")
สิ่งที่แสดงบน Serial Monitor ของ Arduino คือ:
Arduino Received: M
Arduino Received: O
Arduino Received: V
Arduino Received: E
แต่สิ่งที่ฉันต้องการคือ:
Arduino Received: MOVE
ฉันจะเปลี่ยนรหัสด้านบนเพื่อรับตัวละครทั้งหมดในบัฟเฟอร์ inData ได้อย่างไร