Serial порт и прерывания (RCSwitch lib)
- Войдите на сайт для отправки комментариев
Ср, 16/09/2015 - 00:32
Всем привет! Помогите пожалуйста
Ардуина управляет светом через 433mhz передатчик, ей управляет web-сервер через usb.
Возможно ли одновременное использование serial порта и приемника 433мгц с библиотекой RCSwitch, которая использует "external interrupts", как я понял.
Мне нужно по нажатию радио-кнопки "mySwitch.getReceivedValue() == 345429" выполнялась функция alloff()
У меня функция alloff() через раз срабатывает, а то и вообще не работает...
В чем может быть проблема?(
В остальном все четко
#include <RCSwitch.h> #include <livolo.h> byte inByte; RCSwitch mySwitch = RCSwitch(); Livolo livolo(5); void setup() { Serial.begin(9600); mySwitch.enableTransmit(5); mySwitch.setPulseLength(216); } void alloff() { mySwitch.switchOff('a', 2, 3); delay (550); for (int t = 0; t < 2 ; t++) { livolo.sendButton(1, 106); delay (550); } } void loop() { if (Serial.available() > 0) { inByte = Serial.read(); switch (inByte) { case 'q': livolo.sendButton(1, 0); break; case 'w': livolo.sendButton(1, 96); break; case 'e': livolo.sendButton(1, 24); break; case 'r': livolo.sendButton(1, 120); break; case 't': livolo.sendButton(1, 80); break; case 'y': livolo.sendButton(1, 48); break; case 'u': livolo.sendButton(1, 108); break; case 'i': livolo.sendButton(1, 12); break; case 'z': livolo.sendButton(25383, 16); break; case 'd': livolo.sendButton(25383, 56); break; case 'b': mySwitch.switchOn('a', 2, 3); break; case 'c': mySwitch.switchOff('a', 2, 3); break; case 'n': alloff(); break; case 'a': mySwitch.sendTriState("FFFFF0FFFFFF"); break; } } if (mySwitch.available()) { if ( mySwitch.getReceivedValue() == 345429 || mySwitch.getReceivedValue() == 5308757 ) { alloff(); } mySwitch.resetAvailable(); } }
Вроде пошаманил с кодом и перекинул приемник на 3-ий пин(прерывание №1)
Все четенько теперь работает, понятия не имею что сыграло роль...