Доброго времени суток. Подскажите, можно ли управлять обычным коллекторным мотором через модуль реле при помощи ИК пульта? Т.е. нажал кнопку на пульте и держишь - реле открылось, мотор крутится, отпустил - реле закрылось, мотор не крутится. Пробовал что-то подобное сделать. В принципе, получалось, но пульт работает так, что сначала дает конкретную команду, потом FFFFFFFF. Я записываю в переменную команду, и, если получаю FFFFFFFF, то проверяю, какая команда записана в переменной, и если это команда для включения мотора - включаю его, т.е. релюшку. Но получается так, что реле, как я предполагаю, не успевает открываться, как передача команды с пульта прекращается, и так постоянно. Задача - по нажатию и удержании кнопки на пульте заставить работать мотор.
Код (C++): #include <IRremote.h> #include <IRremoteInt.h> IRrecv irrecv(7); decode_results final; int lastkey = 0; int last = 12; int enabled = 0; void setup() { irrecv.enableIRIn(); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(6, OUTPUT); pinMode(5, OUTPUT); digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(6, HIGH); digitalWrite(5, LOW); Serial.begin(9600); } void loop() { if (irrecv.decode(&final)) { if (final.value == 551505585) { lastkey = 1; last = 12; } if (final.value == 551521905) { lastkey = 0; last = 11; } if(final.value == 4294967295) { if(last == 12) { enabled = 1; } } Serial.println(final.value); irrecv.resume(); } else { digitalWrite(2, HIGH); digitalWrite(3, HIGH); enabled = 0; } if (analogRead(6) <= 450) { digitalWrite(2, HIGH); digitalWrite(3, HIGH); } else { if(lastkey == 0) { } else { if(last == 11) { digitalWrite(2, LOW); digitalWrite(3, LOW); } } } if(enabled == 1) { digitalWrite(2, LOW); digitalWrite(3, LOW); } } Схему могу нарисовать, но с других сайтов будет водяной знак. Словами если: Arduino D2 - реле IN1 Arduino D3 - реле IN2 Arduino A6 - датчик влажности A0 (при обнаружении влажности, останавливает моторы) Arduino D5 - GND на ИК-приемнике Arduino D6 - VCC на ИК-приемнике Arduino D7 - OUT на ИК-приемнике С мотора + идет на Arduino +5, но в разрыв через реле. С мотора - идет на Arduino GND напрямую. Вроде как все. При нажатии и удержании 551521905 должен мотор крутиться. 551505585 - это для остановки, раньше нажатием 551521905 включался и постоянно крутился, а 551505585 отключался. Сейчас же хочу чтобы при удержании 551521905 крутился постоянно.
Ну самое простое, это запоминать время. когда приходит последняя команда с помощью millis() и не отключать, пока с этого времени не пройдет интервал больший, чем тот, через который приходят FFFFFFFF