Проблема в считывании кода радиопередатчиком 433Мгц
- Войдите на сайт для отправки комментариев
Втр, 28/07/2015 - 17:27
Скетчем
#include <RemoteReceiver.h> // Connect the receiver to digital pin 2.-пин 2.это вход для Радиоприёмника void setup() { Serial.begin(9600); RemoteReceiver::init(0, 3, showCode); } void loop() { } void showCode(unsigned long receivedCode, unsigned int period) { Serial.print("Code: "); Serial.print(receivedCode); Serial.print(", period duration: "); Serial.print(period); Serial.println("us."); }
был считан код кнопки: Code: 531387, period duration: 504us. При попытке считать сигнал - никакой реакции(
#include <NewRemoteReceiver.h> void setup() { NewRemoteReceiver::init(0, 2, RCV_INT); pinMode(13, OUTPUT); } void loop() { } // Callback function is called only when a valid code is received. void RCV_INT(NewRemoteCode receivedCode) { if (receivedCode.address == 531387 && !receivedCode.groupBit && receivedCode.unit == 531387) { if (receivedCode.switchType == 0) digitalWrite(9, LOW); if (receivedCode.switchType == 1) digitalWrite(9, HIGH); } }
понимаю что прием написан неверно, не хватает знаний. Помогите
Отладку какую-нибудь добавь. Например, вывод того, что считало в Serial.
К сожалению, я не знаю, как это сделать)) я не программист, но за совет - спасибо)
Объявить глобальные переменные для всех твоих данных и например раз в секунду их выплевывать в Serial.
Если я правильно понял, то RCV_INT вызывается по прерыванию от приёмника, тогда по идее можно в луп добавить delay(1000) и Serial.println для всех твоих переменных.
Первое, что на ум приходит.
Библиотеки разные. В первом случае RemoteReceiver.h, во втором NewRemoteReceiver.h. Были случаи, что разные библиотеки выдают один и тот же сигнал с разным кодом сигнала. Второй скетч еще пытается выделить из этого кода адрес устройства, и еще какую-то хрень основанную неизвестно на каком протоколе.
Возьмите за основу первый и развивайте его
Куда проще.
Объявить глобальные переменные для всех твоих данных и например раз в секунду их выплевывать в Serial.
Если я правильно понял, то RCV_INT вызывается по прерыванию от приёмника, тогда по идее можно в луп добавить delay(1000) и Serial.println для всех твоих переменных.
Первое, что на ум приходит.
Что за бред?
Serial.print в прерывании. YEAH BABY!
Спсасибо, все заработало!
Всем спасибо за советы - все функционирует!