这篇文章解释了如何使用Arduino和一个16 x 2液晶显示屏制作一个简单的数字时钟。
介绍
作为一个电子爱好者,我们在一个阶段会想到,如何制作一个数字时钟,尤其是谁对数字电子领域感兴趣。在这篇文章中,我们将看到如何制作一个数字时钟,它的设计非常简单,一个菜鸟在Arduino中就可以毫不费力地完成这个项目。
这个数字时钟只有两个主要组件,Arduino和液晶显示器.Arduino是时钟的大脑,它执行数学和逻辑功能,每秒更新时钟。
原型形象:
LCD屏幕是标准的16针接口显示器。它有16行2列,这意味着它可以在一行中显示16个ASCII字符,它有两列,这就是为什么它被称为16x2显示。
LCD和Arduino之间的连线连接是标准的,我们可以在大多数其他基于Arduino-LCD的项目中找到类似的连接方式。
电位器用来调整显示器的对比度。
用户必须进行最佳设置,以便在所有光照情况下都能正确地看到显示的数字/字符。
有背光,使用户在黑暗的情况下可以看到显示。arduino可以从7伏到12伏的直流插座外部供电。
线路图:
ARDUINO程序代码:
//--------由R.GIRISH开发的程序-------//# include < LiquidCrystal.h >
LiquidCrystal液晶(12、11日5、4、3、2);
int h = 12;
int m;
int年代;
int国旗;
int时间;
const int hs = 8;
const int女士= 9;
int state1;
int state2;
无效的设置()
{
lcd.begin(16日2);
}
无效循环()
{
lcd.setCursor (0,0);
s = s + 1;
液晶显示器。打印(“:”);
lcd.print (h);
lcd.print(“:”);
lcd.print (m);
lcd.print(“:”);
lcd.print(年代);
如果(国旗< 12)lcd。打印(“我”);
如果(标志= = 12)lcd。打印(“点”);
如果(国旗> 12)lcd。打印(“点”);
如果(标志= = 24)标志= 0;
延迟(1000);
lcd.clear ();
如果(= = 60){
s = 0;
m = m + 1;
}
如果(m = = 60)
{
m = 0;
h = h + 1;
国旗=国旗+ 1;
}
如果(h = = 13)
{
h = 1;
}
lcd.setCursor (0,1);
液晶显示器。print(“HAVE A NICE DAY”);
//----------- 时间设定 ----------//
state1 = digitalRead (hs);
如果(state1 = = 1)
{
h = h + 1;
国旗=国旗+ 1;
如果(国旗< 12)lcd。打印(“我”);
如果(标志= = 12)lcd。打印(“点”);
如果(国旗> 12)lcd。打印(“点”);
如果(标志= = 24)标志= 0;
如果(h = = 13) h = 1;
}
state2 = digitalRead(女士);
如果(state2 = = 1) {
s = 0;
m = m + 1;
}
}
//--------由R.GIRISH开发的程序-------//
注:以上程序经过验证,无错误。如果你收到任何警告或错误,请手动添加LiquidCrystal库。
时间设定:
有两个按钮,一个设置小时,另一个设置分钟。按任意一个都将增加相应的数字。设置小时按小时按钮直到正确的时间显示,分钟类似。
注意:
·在设定时间时,按下按钮,直到所需时间到达。暂时按下按钮不能改变时间。
·每一位数字只在一秒又一秒的时间内递增,这是因为整个程序循环延迟了1秒。
·秒的数字从01到60再循环,不会像传统数字时钟那样显示“00”。
Kaushik Mb说
老兄,每天的延迟时间大约是10分钟,所以一周的延迟时间大约是1小时……
GR说
嗨kaushik,
迟滞是由于ATmega328P中的陶瓷基谐振器,迟滞函数与晶体无关。它随环境温度的变化而变化,但我们可以通过在延迟函数中添加几毫秒来补偿它,例如try delay(1050);而不是延迟(1000);计算时间延迟并增加几毫秒。
如果你的时钟领先于时间,试着减少延迟。
问候
Kaushik Mb说
谢谢GR的回复,由于时间延迟问题,我购买了一个RTC DS1307 IC,我仍然没有尝试。希望一切顺利…
不过Panigrahy说
先生,能给我发一张多功能12频道led灯的草图吗
Sayantan说
我想添加警报功能到这个项目。它的完整程序代码是什么?
赃物说
设计定制代码需要为服务付费