цифровая электроника
вычислительная техника
встраиваемые системы

 

Часы на Arduino без использования модуля RTC

Автор: Mike(admin) от 14-01-2017, 20:05

Одним из первых проектов, которые новички собирают на основе платы Arduino, являются простые часы, ведущие отсчет времени. В основном такие часы основаны на подключаемом к Arduino модуле RTC (Real Time Clock или Часы реального времени). Сегодня на рынке электронных компонентов доступны разные модели RTC, различающиеся точностью и ценой. Среди распространенных моделей можно назвать DS1302, DS1307, DS3231.


Часы на Arduino без использования модуля RTC

Но часы на Arduino можно сделать и без использования RTC, особенно если не получается достать такие модули. Конечно, точность в данном случае будет невелика, поэтому проект скорее должен рассматриваться как учебный.


Принцип работы таких часов довольно прост. Каждый раз, когда вы включаете эти часы на Arduino, вы должны будете установить для них текущее значение времени, также как и любые аналоговые часы. Такие часы, безусловно, лучше не использовать в своей повседневной жизни при долгой их активности без перезагрузки и дальнейшей настройки, поскольку рассинхронизация с текущим временем в процессе длительной эксплуатации может быть существенной.


Данные часы можно собрать на обычной макетной плате, поскольку здесь не потребуется много компонентов. Основным нашим звеном здесь будет плата Arduino Uno. Для отображения времени можно взять ЖК-дисплей 16x2. Для изменения настроек времени следует подключить две кнопки (для часов и минут). Кнопки подключаются к Aduino через резисторы 10 КОм. Чтобы изменять яркость дисплея потребуется потенциометр на 10 КОм. Схема подключения всех этих компонентов к плате Arduino Uno представлена ниже.


Часы на Arduino без использования модуля RTC

Теперь следует запрограммировать Arduino. Простой код (скетч), позволяющий выводить время на экран LCD-дисплея приведен ниже.



#include <LiquidCrystal.h> 
LiquidCrystal 
lcd(12,11,5,4,3,2); 
int h=12; 
int m; 
int s; 
int flag; 
int TIME; 
const int hs=8; 
const int ms=9; 
int state1; 
int state2; 
void setup() 
{ 
 lcd.begin(16,2); 
} 
void loop() 
{ 
lcd.setCursor(0,0); 
s=s+1; 
lcd.print("TIME:"); 
lcd.print(h); 
lcd.print(":"); 
lcd.print(m); 
lcd.print(":"); 
lcd.print(s); 
if(flag<12)lcd.print("AM"); 
if(flag==12)lcd.print("PM"); 
if(flag>12)lcd.print("PM"); 
if(flag==24)flag=0; 
delay(1000); 
lcd.clear(); 
if(s==60){ 
 s=0; 
 m=m+1; 
} 
if(m==60) 
{ 
 m=0; 
 h=h+1; 
 flag=flag+1; 
} 
if(h==13) 
{ 
 h=1; 
} 
lcd.setCursor(0,1); 
lcd.print("HAVE A NICE DAY"); 
//-------Time 
// setting-------// 
state1=digitalRead(hs); 
if(state1==1) 
{ 
 h=h+1; 
 flag=flag+1; 
 if(flag<12)lcd.print("AM"); 
 if(flag==12)lcd.print("PM"); 
 if(flag>12)lcd.print("PM"); 
 if(flag==24)flag=0; 
 if(h==13)h=1; 
} 
state2=digitalRead(ms); 
if(state2==1){ 
 s=0; 
 m=m+1; 
} 
}



Теги: Arduino, часы




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий