Я успішно дотримувався інструкцій на цьому веб-сайті:
http://www.doctormonk.com/2012/04/raspberry-pi-and-arduino.html
і мені вдалося налагодити зв’язок між пі та моїм медалом Arudino точно так, як вказує веб-сайт.
Однак замість того, щоб надсилати ціле число, яке відображає кількість разів блимає світлодіод, я хочу надіслати текст ASCII на зразок:
"ПОВЕРНІТЬСЯ 5 МЕТРІВ Вперед", "ВЕРНІТЬСЯ ВЛІТЬ", "ПОВЕРНУЙТЕ 10 МЕТЕРВ НАЗАД" до ардуїно від пі.
Я написав наступний код:
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 і в консолі я набрав:
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?