Я отправляю 3 набора данных от 3-х датчиков из Arduino 1 (маршрутизатор) в другой Arduino (координатор) для беспроводной технологии (xbee):
По координатору я получаю беспроводные данные от этих 3-х датчиков (от роутера) отлично. Поток данных выглядит примерно так (данные каждого датчика в своей строке):
+22,5624728451
944
8523
Я хочу, чтобы эти 3 значения были 3 переменными, которые постоянно обновляются, а затем передают эти значения остальной части программы, чтобы сделать что-то вроде печати на ЖК-дисплее или что-то еще:
температура = 22. 5624728451
газ = 944
дым = 8523
Изначально у меня было только 2 датчика, и я отправляю данные этих 2 датчиков примерно так:
22.5624728451944 (22.5624728451 - температура, 944 - газ), и я получил оба из них в одной строке и разделил все на две переменные (с readString.substring ()) с кодом ниже. Но теперь у меня есть 3 датчика, и я получаю данные в отдельной строке, потому что я не знаю, какова длина каждой строки данных ... И я не могу использовать один и тот же метод (отправка только одной строки, содержащей все данные датчиков, на то же самое, а затем разделить их)
Мой старый код:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,10,9,8,7);
String temperature;
String gas;
String readString;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop() {
while (Serial.available() > 0)
{
char IncomingData = Serial.read();
readString += IncomingData ;
temperature = readString.substring(0, 13); //get the first 13 characters
gas = readString.substring(13, 16); //get the last 3 characters
Serial.print(IncomingData); //here I have my string: 20.1324325452924 wichs is updating properly when I have sensor values changes
// Process message when new line character is DatePrimite
if (IncomingData == '\n')
{
Serial.println(temperature);
lcd.setCursor(0,0);
lcd.write("T:");
lcd.print(temperature);
delay(500);
temperature = ""; // Clear DatePrimite buffer
Serial.println(gaz);
lcd.begin(16, 2);
lcd.setCursor(0,1);
lcd.write("G:");
lcd.print(gas);
delay(500);
gaz = ""; // Clear DatePrimite buffer
readString = "";
}
}
}
Все, что я хочу сейчас сделать, - это назначить переменную для каждого датчика, данные которого (3 строки - 3 переменные для каждой строки) постоянно обновляются, а затем передать эти значения остальной части программы. У кого-нибудь есть идеи, как изменить код для работы в этой ситуации?
Заранее спасибо!