Добавить таймер без RTC
- Войдите на сайт для отправки комментариев
Ср, 31/07/2019 - 18:52
Всем привет. Может быть у кого-то есть наработки или хотя бы примерно с чего начать, есть код
#include <IRremote.h>
#include <IRremoteInt.h>
int Pwr = A1; // LED
boolean state = 0;
//IR Receiver Module Pin and variable
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
pinMode(Pwr, OUTPUT); // Вывод Pwr выход
irrecv.enableIRIn(); //Старт ИК-приёмника
}
void loop(){
if(irrecv.decode(&results)){ // Декодирование принятого сигнала по ИК
if(results.value == 0xFF111){ // Код кнопки POWER
state = !state;
}
digitalWrite(Pwr, state); // Пин Pwr
irrecv.resume();
}
}
Данный код щелкает реле по кнопке с пульта ду, собственно хочудобавить установку таймера (как на обычных вентиляторах) - т.е. кнопку нажал, бипер пикнул, таймер встал на отсчет времени,время выбираемся от 10 минут до 2 часов, подтверждение - сигнал. Как такое реализовать? Спасибо
http://arduino.ru/Reference/Millis
Вот набросал пример, сейчас не могу проверить, есть вероятность, что заработает?
#include <IRremote.h> #include <IRremoteInt.h> int Pwr = A1; // LED unsigned long time; //Переменная для установки времени int count_time; //Число нажатий; boolean state = 0; time = 0; count_time=0; //IR Receiver Module Pin and variable int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup(){ pinMode(Pwr, OUTPUT); // Вывод Pwr выход irrecv.enableIRIn(); //Старт ИК-приёмника } void loop(){ if(irrecv.decode(&results)){ // Декодирование принятого сигнала по ИК if(results.value == 0xAA){ //если нажата кнопка с кодом АА, тогда выполнить digitalWrite(Pwr, state); // включаем реле state = !state; time(millis(10000)){ //10 секунд ждем digitalWrite(Pwr, state); // выключаем реле state = !state; } count_time =1; // 1-е нажатие на кнопку } if((results.value == 0xAA) &&(count_time =1)){ //если уже была нажата кнопка с кодом АА, тогда выполнить digitalWrite(Pwr, state); // включаем реле state = !state; time(millis(20000)){ //20 секунд digitalWrite(Pwr, state); // выключаем реле state = !state; } count_time =2; // 1-е нажатие на кнопку } // и т.д. для 3-4 нажатий if(results.value == 0xFF111){ // Код кнопки POWER state = !state; } digitalWrite(Pwr, state); // Пин Pwr irrecv.resume(); } }Состояния лучше через case делать?
Состояния лучше через case делать?
#include <IRremote.h> #include <IRremoteInt.h> int Pwr = A1; // LED unsigned long time; //Переменная для установки времени int count_time, n; //Число нажатий; boolean state = 0; time = 0; count_time=0; //IR Receiver Module Pin and variable int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup(){ pinMode(Pwr, OUTPUT); // Вывод Pwr выход irrecv.enableIRIn(); //Старт ИК-приёмника } void loop(){ if(irrecv.decode(&results)){ // Декодирование принятого сигнала по ИК if(results.value == 0xFF111){ // Код кнопки POWER state = !state; } digitalWrite(Pwr, state); // Пин Pwr irrecv.resume(); } if(results.value == 0xAA){ //если нажата кнопка с кодом АА, тогда выполнить ++n; if (n>5) n=0; button_ch(); } } void button_ch(){ switch(n) case 0: digitalWrite(Pwr, state); // включаем реле state = !state; break; case 1: digitalWrite(Pwr, state); // включаем реле state = !state; time(millis(10000)){ //10 секунд ждем digitalWrite(Pwr, state); // выключаем реле state = !state; break; case 2: digitalWrite(Pwr, state); // включаем реле state = !state; time(millis(20000)){ //20 секунд ждем digitalWrite(Pwr, state); // выключаем реле state = !state; break; }void button_ch(byte n) { ... }Есть, но нулевая.
Что мешает сначала проверить, а потом постить вопросы? Вы куда-то так торопитесь, что не можете дождаться возможности проверить?
Есть, но нулевая.
Что мешает сначала проверить, а потом постить вопросы? Вы куда-то так торопитесь, что не можете дождаться возможности проверить?
Просто, домой возвращаюсь оочень поздно и писать коды приходится на работе- проверяю позже. По времени - не тороплюсь, но хотелось бы уже доделать. Что-то с этими millis вообще все туго (((
Просто, домой возвращаюсь оочень поздно и писать коды приходится на работе- проверяю позже.
Ну и не постите вопросов пока сами не прверили. Посмотрите со стороны, как это выглядит: "я человек зантой, мне проверять некогда, а вам делать нехрен, проверьте всё и мне расскажите что там да как".