Я новичок, пытающийся общаться между iPhone и Arduino Uno. У меня есть модуль HM-10 BLE, подключенный к моему Arduino. Я использую его для отправки и получения сообщений с моего iPhone. Мой Arduino запускает пример программы SoftwareSerial:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
mySerial.println("Hello, world?");
}
void loop() { // run over and over
if (mySerial.available()) {
Serial.write(mySerial.read());
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
}
Вот так все работает нормально: Arduino отправляет сообщения на мой iPhone, как и ожидалось, и печатает «ping» на последовательном мониторе, когда я посылаю «ping» на Arduino. Однако, если я добавлю эти строки в
void loop(){
if (mySerial.available()) {
Serial.write(mySerial.read);
String message = String(mySerial.readString);
if (message == "ping") {
mySerial.write("pong");
}
}
} // the other code stays the same
он внезапно говорит только «p» на последовательном мониторе, хотя я отправил «ping». Оператор if также не сработает, поэтому он не отправит pong назад.
Я не могу найти никаких недостатков в своем коде, он даже работал вчера с таким же кодом.
Спасибо за помощь!