Здравствуйте. Пока ещё не заказал RFID сенсор, но уже пишу код под него. Что требуется: 1. Если к сенсору RFID приложена карта, передавать в Serial порт строку вида: "Temperature = 2C, Humidity = 10%CARD363636", где 363636 - номер карты, 2C и 10% соответственно - температура и влажность. 2. Если к сенсору RFID НЕ приложена карта, передавать в Serial порт строку вида: "Temperature = 2C, Humidity = 10%CARD", где 2C и 10% соответственно - температура и влажность. (без кавычек) Код на Arduino: PHP: // подключаем библиотеку температуры #include <dht.h> // подключаем библиотеку для работы с RFID #include <SoftwareSerial.h> // создаём объект-сенсор DHT sensor = DHT(); // создаём обьект-RFID SoftwareSerial rfid = SoftwareSerial(5, 6); // строка для значений температуры char msg[128]; void setup() { Serial.begin(9600); rfid.begin(9600); // методом attach объявляем к какому контакту подключен // сенсор. В нашем примере это нулевой аналоговый контакт sensor.attach(A5); // после подачи питания ждём секунду до готовности сенсора к работе delay(500); // проверяем датчик температуры sprintf(msg, "Temperature = %dC, Humidity = %d%%", sensor.getTemperatureInt(), sensor.getHumidityInt()); //Serial.println(msg); if (rfid.available()) { Serial.print(msg); Serial.print("CARD"); while (rfid.available()) { Serial.print(rfid.read()); } }else{ Serial.print(msg); Serial.print("CARD"); } // проверяем номер RFID-карты } void loop() { } Вопрос: правильный ли код я написал под Arduino? (протестировать не могу, т.к. пока нету RFID-сенсора)
Заработало со следующим кодом: PHP: // подключаем библиотеку температуры #include <dht.h> // подключаем библиотеку для работы с RFID #include <SoftwareSerial.h> // создаём объект-сенсор DHT sensor = DHT(); // создаём обьект-RFID SoftwareSerial rfid = SoftwareSerial(5, 6); // строка для значений температуры char msg[128]; void setup() { Serial.begin(9600); rfid.begin(9600); // методом attach объявляем к какому контакту подключен // сенсор. В нашем примере это нулевой аналоговый контакт sensor.attach(A5); // после подачи питания ждём секунду до готовности сенсора к работе delay(500); } void loop() { sensor.update(); Serial.println(""); sprintf(msg, "Temperature = %dC, Humidity = %d%%", sensor.getTemperatureInt(), sensor.getHumidityInt()); if (rfid.available()) { Serial.print(msg); Serial.print("CARD"); while (rfid.available()) { Serial.print(rfid.read()); } }else{ Serial.print(msg); Serial.print("CARD"); } delay(1000); }
Вместо Код (Text): if (rfid.available()) { Serial.print(msg); Serial.print("CARD"); while (rfid.available()) { Serial.print(rfid.read()); } } else{ Serial.print(msg); Serial.print("CARD"); } можно написать короче: Код (Text): Serial.print(msg); Serial.print("CARD"); while (rfid.available()) Serial.print(rfid.read());