Самые простые часы с индикацией на экране LCD1602

в 2:44, , рубрики: arduino, метки: , ,

С момента приобретения arduino, все никак не было или возможности или времени что-то сделать, начать "изучать" это дело. Но всегда был интерес к любому программированию будь то C, VHDL и прочее.

И вот однажды попал мне в руки экранчик lcd1602, где-то раньше читал, что его под ардуинку собирают. А у меня как раз с распайкой под пины, наверное от какого-нибудь ардуновского набора. Ну и решил, что надо бы его проверить, но проверить его простым включением и выводом текста не слишком интересно. Так и появилась идея написать банально часы и выводить это всё на экранчик.

Наверное стоит обговорить еще тот факт, что это самые простые часы, без кнопок, будильников, погоды и прочего.

После чтения даташитов и изучения информации по подключению экрана к ардуинке получил следующую схему:

image

При подключении ардуино к 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);         //Выводим секунды

}

Всё! Готово, прошиваемся и смотрим что получилось:

image

Всё, работает. Надеюсь что статья поможет кому-нибудь. Если будет интересно, то напишу следуюущую статью, где сделаем часы + дата. Спасибо за внимание.

Автор: push

Источник


  1. Рустам:

    спасибо собирал вместе с сыном ему 8 лет так теперь незнаю ругать вас или благодарить он просит уже 3ю ардуино первая была ардуино робот с ультразвуком . но всеже огромное спасибо вам побольше бы вас таких людей

  2. Сергей:

    Заработало сразу, хорошие комментарии в программе, все понятно

  3. Богдан:

    как можно переделать на Arduino Nano и экран 1601?

  4. Владимир:

    Спасибо вам большое, собирали всей семьёй! Теперь не покупаем часы, а делаем сами. Нас уже ненавидят соседи, потому что после каждых собранных часов – мы устраиваем застолье! А часы мы собираем КАЖ ДЫЙ ДЕНЬ! :)))))

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js