Tôi đã làm theo hướng dẫn trên trang web này thành công:
http://www.doctormonk.com/2012/04/raspberry-pi-and-arduino.html
và tôi đã có thể có được thông tin liên lạc giữa pi và arudino mega của tôi chính xác như trang web chỉ định.
Tuy nhiên, thay vì gửi một số nguyên biểu thị số lần đèn LED nhấp nháy, tôi muốn gửi văn bản ASCII như sau:
"DI CHUYỂN 5 METERS FORWARD", "TACK LEFT", "DI CHUYỂN 10 METERS BACKWARD" cho arduino từ pi.
Tôi đã viết đoạn mã sau:
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);
}
}
Tôi đã flash mã trên thành công vào Arduino Mega 2560 của tôi.
Tôi đã chuyển sang thiết bị đầu cuối python của mình trên Raspberry Pi và trong bảng điều khiển tôi đã gõ:
import serial
ser = serial.Serial('/dev/ttyACM1',9600)
ser.write("MOVE")
Những gì được hiển thị trên Màn hình nối tiếp Arduino của tôi như sau:
Arduino Received: M
Arduino Received: O
Arduino Received: V
Arduino Received: E
Nhưng điều tôi muốn là:
Arduino Received: MOVE
Làm cách nào để thay đổi mã ở trên để đưa tất cả các ký tự vào bộ đệm inData?