С момента приобретения arduino, все никак не было или возможности или времени что-то сделать, начать "изучать" это дело. Но всегда был интерес к любому программированию будь то C, VHDL и прочее.
И вот однажды попал мне в руки экранчик lcd1602, где-то раньше читал, что его под ардуинку собирают. А у меня как раз с распайкой под пины, наверное от какого-нибудь ардуновского набора. Ну и решил, что надо бы его проверить, но проверить его простым включением и выводом текста не слишком интересно. Так и появилась идея написать банально часы и выводить это всё на экранчик.
Наверное стоит обговорить еще тот факт, что это самые простые часы, без кнопок, будильников, погоды и прочего.
После чтения даташитов и изучения информации по подключению экрана к ардуинке получил следующую схему:
При подключении ардуино к usb увидите, что экран загорится синим. На нем должны появится квадратики (экран проинициализирован), если вы их не видите попробуйте покрутить переменный резистор.
Приступим к написанию кода. Логика программы думаю понятна всем, она ровным счетом такая же, как и в любых часах. То есть: Считаем секунды, дошли до 60 — прибавляем минуту, секунды обнуляем, минуты дошли до 60, прибавляем час, обнуляем минуты и секунды.
Вот собственно и сам код программы, с подробнейшими комментариями:
#include <LiquidCrystal.h> //Подключим библиотеку для работы с дисплеем
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) //Подключение лисплея к пинам ардуино в моем случае УНО
int m=9; //минуты
int h=13; //часы
int s=55; //секунды
void setup()
{ }
void loop()
{
s=s+1; //считаем секунды
delay(990); //пауза для отсчета секунд (подбирается эксперементально)
if (s==60) //при 60секундах
{
s=0; //обнуляем секунды
m=m+1; //добавляем минуту
if(m==60) //при 60 минутах
{
m=0; // обнуляем минуты
h=h+1; //добавляем час
}
}
//Вывод на дисплей
//Вывод времени
lcd.begin(16, 2); //Задаем размерность экрана формат : кол-во символов в строке на кол-во строк
lcd.setCursor(0, 0); //Устанавливаем курсор в начало 1й строки
lcd.print("Time:"); //Выводим надпись "Time:"
lcd.setCursor(6, 0); //Устанавливаем курсор в 6й знак, 1й строки
lcd.print(h); //Выводим часы
lcd.setCursor(8, 0); //Устанавливаем курсор в 8й знак, 1й строки
lcd.print(":"); //Вывод двоеточие
lcd.setCursor(9, 0); //Устанавливаем курсор в 8й знак, 1й строки
lcd.print(m); //выводим минуты
lcd.setCursor(11, 0); //Устанавливаем курсор в 8й знак, 1й строки
lcd.print(":"); // Вывод двоеточие
lcd.setCursor(12, 0); //Устанавливаем курсор в 8й знак, 1й строки
lcd.print(s); //Выводим секунды
}
Всё! Готово, прошиваемся и смотрим что получилось:
Всё, работает. Надеюсь что статья поможет кому-нибудь. Если будет интересно, то напишу следуюущую статью, где сделаем часы + дата. Спасибо за внимание.
Автор: push
спасибо собирал вместе с сыном ему 8 лет так теперь незнаю ругать вас или благодарить он просит уже 3ю ардуино первая была ардуино робот с ультразвуком . но всеже огромное спасибо вам побольше бы вас таких людей
Заработало сразу, хорошие комментарии в программе, все понятно
как можно переделать на Arduino Nano и экран 1601?
Спасибо вам большое, собирали всей семьёй! Теперь не покупаем часы, а делаем сами. Нас уже ненавидят соседи, потому что после каждых собранных часов – мы устраиваем застолье! А часы мы собираем КАЖ ДЫЙ ДЕНЬ! :)))))