首页

Arduino闹钟

在这个项目中,我们设计了一个基于Arduino的带闹钟的实时时钟。实时时钟(RTC)是一种电池供电的时钟,即使在没有外部电源或微控制器重新编程的情况下也能测量时间。

RTC显示具有所有计时功能的时钟和日历。连接到RTC的电池是一个独立的电池,与主电源没有关联或连接。
Arduino闹钟

当电源恢复后,RTC显示实时时间,与断电时间无关。这种实时时钟在计算机中很常见,通常被称为CMOS(互补金属氧化物半导体)。

大多数微控制器和微处理器都内置计时器来计时。但它们只有在微控制器接通电源时才能工作。

帮助我们选择下一个DIY Arduino项目。 选择你最喜欢的项目»

当电源打开时,内部计时器重置为0。因此,在数据记录器等应用程序中包含一个单独的RTC芯片,当电源关闭或重置时,它不会重置为0。

实时时钟通常在数据日志记录应用程序、时间戳、警报、计时器、时钟构建等方面很有用。在本项目中,设计了一个实时时钟,它可以显示精确的时间和日期,并具有报警功能。

在这个项目中,与Arduino一起使用的是一种常用的RTC芯片DS1307。下面将详细介绍其电路、设计和工作原理。

线路图

Arduino闹钟

闹钟的连接 组件的要求

  • Arduino UNO - 1 [在这里买
  • RTC模块- 1
  • 按钮- 3
  • 16X2液晶显示器- 1 [在这里买
  • 蜂鸣器- 1
  • 10 kΩ - 2
  • 10 kΩ锅- 1

组件描述

DS1307

DS1307是一种常用的实时时钟(RTC)集成电路,用于时钟和日历。clock函数提供秒、分和小时,而calendar函数提供日、日、月和年的值。

该时钟可以在12小时AM/PM指示或24小时格式中运行。RTC上必须连接3V的备用电池,以便IC在掉电时自动切换到备用电源。一个

32.768 KHz晶体连接到DS1307的振荡器端进行1 Hz的振荡。

电路设计

单片机与RTC IC DS1307之间的通信采用串行I2C双向总线。I2C协议是主模式下速度较快的设备(在本例中为Microcontroller或Arduino)和从模式下速度较慢的设备(RTC)之间的通信方法。

Arduino上有两个引脚I2C通信.模拟引脚4和5将充当SDA(串行数据)和SCL(串行时钟)。

它们分别连接到RTC的SDA和SCL引脚。这两个引脚的RTC是拉高使用10KΩ电阻。

一个液晶显示器用来显示时钟。LCD的6脚必须连接到Arduino。LCD的RS、E、D4、D5、D6、D7(引脚4、6、11、12、13、14)与Arduino的2、3、4、5、6、7连接。

设置闹钟有三个按钮。这些按钮连接到Arduino的8、9和10引脚。一个蜂鸣器连接到Arduino的引脚11上,起到报警的作用。

工作

这个项目的目的是创建一个实时和闹钟一起打卡特性。项目的工作原理如下所述。

所有的连接都按照所示的电路图进行。上传Arduino代码,LCD显示当前日期和时间。

为了设置闹钟,我们按下设置键。它将进入警报模式并询问时间,同时显示当前时间。必须按下增量键才能改变时间。

由于时钟为24小时制,所以小时数将在0到23之间递增。一旦闹钟的时间设置好,我们必须按下一个按钮进入分钟选项卡。

再次按下增量键来更改分钟数。输入闹钟时间后,按下设置键,闹钟就设置好了。

作为告警输入的值存储在Arduino的EEPROM中。这些数值不断地与当前时间进行比较。

当存储值与当前值匹配时,触发告警蜂鸣器。为了停止报警,下一个按钮被按下。

输出视频

代码

请注意

  • 本课题利用Arduino和RTC IC设计了一个具有报警功能的简易实时时钟。
  • 时间和报警将持续运行,因为RTC有备份电源,报警存储在Arduino的内部EEPROM中。
  • 通过修改Arduino的代码可以添加贪睡、多个闹钟等功能。

49岁的反应

    1. Arduino的引脚11连接到Buzzer,但它被声明为“#define buzz 11”。“line int tmp,Inc,hor,mIn,add=11;”声明了一些整数变量。

  1. 任何一个帮助请我已经使这个项目的所有电路是完整的,当我打开电池lcd是在,但没有显示,像没有数字显示。有人能解决这个问题吗?

  2. 谢谢你的编码!!
    我的液晶显示器上显示的时间与当前时间相差12小时。我该怎么办?我急需帮助。

  3. 可爱的小项目,但不幸的是没有完成。在这篇文章下面的所有愚蠢问题中,有一个非常突出,那就是:“我记错时间了,请帮帮我!”

    如果没有办法设置时钟,而你完全避免了它,那么这个项目就是无用的。

  4. 的帮助!我下载了上面给出的程序,我没有运气,它一直给我。

    C:\Users\cameron\Documents\Arduino\ alarm_clock_new \ alarm_clock_new。ino:3:20:致命错误:RTClib.h:没有这样的文件或目录
    # include
    编译终止。
    退出状态1
    单板Arduino/Genuino Uno编译错误。

    我知道我需要一个实时时钟,但每次我添加它似乎不工作,我将把RTC时钟文件和我如何解决它?

    1. 你好,
      您需要从此链接下载“RTClib”库https://github.com/adafruit/RTClib在zip格式。解压内容,你会得到一个名为“RTClib-master”的文件夹。复制此文件夹并粘贴到Arduino libraries目录中(在本例中,路径将为C:\Users\cameron\Documents\Arduino\libraries)。
      希望这将解决您的错误。
      谢谢。

  5. 我该如何将这些按钮开关连接到arduino以及如何接地这些开关?把这些开关连接起来的技术是什么?

  6. 由于该程序不允许设置RTC,它的使用是非常有限的,因为日光节约开关需要一个最小的时间变化。
    显然,有一些程序可以改变RTC上的时间,但这需要重新编程arduino每次时间需要校正。

    因此,将设置RTC添加到程序中是最受欢迎的。

  7. 我可以用RTC DS3231代替DS1307吗?我已经尝试用“RTC_DS3231 RTC;”替换行“RTC_DS1307 RTC”,并有DS3231的库,但它似乎不工作。我得到错误“RTC_DS3231没有命名类型”。

    请帮忙,谢谢!

    1. 你好,
      设置日期和时间由代码负责。当你将代码上传到Arduino时,当前的日期和时间会从系统中提取出来并上传到RTC。


  8. 你的代码显示了一些错误,我编辑了代码,只有一个错误
    希望你能帮助我

    类RTC_DS3231没有名为isrunning的成员

留下一个回复

您的电邮地址将不会公布。

Electronicshub图标
Baidu
map