ПРОСТЕЙШИЙ СЕКУНДНЫЙ ТАЙМЕР СВОИМИ РУКАМИ НА ARDUINO

preview_player
Показать описание

Рекомендации по теме
Комментарии
Автор

#include <Time.h> //подключаем библиотеку Тайм
#include <TimeLib.h> //подключаем библиотеку Тайм
#define DISPLAY_CLK_PIN 3 // подключаем индикатор на пине 3 TM1637
#define DISPLAY_DIO_PIN 4 // подключаем индикатор на пине 4 TM1637
#include "TM1637.h" // библиотека для TM1637
#define Btn_1 A4 //назначаем кнопку №1
#define Btn_2 A5 //назначаем кнопку №2

TM1637 display(DISPLAY_CLK_PIN, DISPLAY_DIO_PIN); // связываем библиотеку с объектом дисплей

unsigned char A=0;// время в часах, когда сработает таймер
unsigned char B=0;//сколько секунд будет работать 0-99
unsigned char dots=1; //для точек индикатора

void setup()
{
display.set(7); //яркость индикатора (0-7)
Serial.begin(9600); //стыкуемся с монитором порта
pinMode(Btn_1, INPUT_PULLUP); // включаем внутренний резистор на первой кнопке
pinMode(Btn_2, INPUT_PULLUP); // включаем внутренний резистор на второй кнопке
byte welcome_banner[] = { _H, _E, _L, _L, _O, }; //приветственное слово
display.runningString(welcome_banner, sizeof(welcome_banner), 300); //приветственное слово в форме бегущей строки
}
void loop()
{
action_buttons();
displey();
led();
}


void action_buttons() //функция при нажатии кнопки

{
if (200), A++; } //если кнопка №1 нажата, то счет команды "А" возрастает
if (200), B++;} //если кнопка №2 нажата, то счет команды "B" возрастает
if (A>24) {A=0;}
if (B>99) {B=0;}
}

void displey()//функция отображения на дисплее
{
int8_t timeDisp[2];//делим дисплей на два окна
timeDisp[0] = A / 10; //отображает на первом индикаторе дисплея десятки часов
timeDisp[1] = A % 10;//отображает на втором индикаторе единицы часов
timeDisp[2] = B / 10;//отображает на третьем индикаторе дисплея десятки секунд работы
timeDisp[3] = B % 10;//отображает на четвертом индикаторе дисплея единицы секунд работы
display.display(timeDisp);
display.point(dots ==0 ? POINT_OFF : POINT_ON); //гасим точки на индикаторе

}
void led() //функция выполнения действия при достижении определенного времени
{
if (A == hour()) {
if (B >= (minute()*60 + second())) {digitalWrite(A0, HIGH); }
else {digitalWrite(A0, LOW);}}
else {digitalWrite(A0, LOW);}
}

AquaManHero
Автор

Привет! 🤝🏻 Хотелось бы увидеть конечное изделие, в котором будет применяться этот блок. Полив не у каждого есть в террариуме, оранжерее или теплице и нужен ли он большинству аквариумистов? Но закинуть в память на всякий случай можно. Да, про детальки из Китая боюсь придется временно забыть. Эпидемия короновируса набирает страшные обороты. Вот сижу и гадаю приедет нобулайзер или деньги вернут? Да чёрт с ним, насколько страшными окажутся последствия для людей? Так, есть более простые и более надёжные промышленные таймеры под разную нагрузку! До 20 программ на 7 дней (в любом наборе) недели! Время работы от 1 минуты. Успехов тебе! 🤝🏻

bcctqql
Автор

По началу долго ломал голову как так 24 часа но 99минут))) потом дошло что не минут а секунд сработки) советую кстати усложнить схему чуток а именно скетч и задать что при удержании кнопки 1 более 10 секунд переходит в режим настройки времени и обеими кнопками выставляется 0:00 - 24:60 часы с минутами . А при удержании книпки 2 выставляется время работы 60:60 секунды и минуты. А через минуту бездействия кнопок автоматически переходить в режим индикации. При этом по поводу двоеточия одну если данный индикатор поддерживает раздельное свечение точек, советую так же указать что одна точка разделитель а вторая индикатор сработки(меньше компонентов индикации). А если добавить ещё одну кнопочку то можно оной задать либо промежуток циклов сработки в день на сутки либо выбор настройки определенного очередного цикла, чтоб можно было до много раз в сутки делать повтор) а если сделать то же самое на несколько установок дождевателей тоесть на несколько банок то сработку можно дать с одной дуни на несколько реле и при этом третьей кнопкой при удержании задать очередность сработки реле чтоб давление при поливе не сильно проседало если используется насос и клапана)

karif
Автор

Народ подскажите пожалуйста🙏. У меня нет такого модуля, но есть без платы... 5461AS-1. Как его подключить?

XoMyak
Автор

на светодиод можно и 220 в подать. главное ограничить ток. для справки смотрите вольт-амперную характеристику в даташит, например.

s.sunduck
Автор

привет а есть таймер 2-3 канала но без монитора и экондера выставит ь в прошивке . мне нужно циклический таймер и с Хранение настроек в энергонезависимой памяти .. таймер для инкубатора поворот лотка по часам с интревалом работы и второй канал суточны й для проветривания 1-3 раза в сутки как сделать такое ?

uvoenju
Автор

Акваменчик, у тебя дырка в указательном пальце.. Это ты так с кнопкой воевал?😳

Maks_Samovar
Автор

00-24 это 25 часов в сутки. 00-23 ставить надо

zumiraks
Автор

Как во втором окне сменить секунды на минуты?

tiwvtyv
Автор

Полезная штука) я так и не разобрался, как сделать так, чтоб время не отставало и не спешило без модуля часов реального времени...

aquaterra
Автор

а где скетч, скетч-то где, ась? :))) красавец !!!!

aquacomp
Автор

ну, я как-то разберусь, но зачем это всё аквалюбителям? сейчас мозг взорвался у большинства подписчиков)))

nfcjdux
Автор

Я первый поставил лайк и вообще я первый

lzqbqjn