用arduino 做一个万年历

每月下旬的四到五天有一个工作量的低谷期,利用这段时间,我们再折腾一下arduino。这次我们做一个万年历。
一、所需材料
根据我们就地取材的原则,这次我们还是要充分利用现有材料:
材料表:
1、一个带I2C的LCD1602显示屏,用于显示日期、时间、星期等信息。

之所以要用带I2C的屏,是因为单独的LCD1602需要接12条线,除了VVC和GND外,占6个接口,而且还需要一个10K的电位器来调整屏的亮度,而使用带I2C的,一共有四条线就足够了一条VVC,一条GND,一条SDA,一条SCL,而且自带调节屏幕亮度的电位器。能让我们的万年历系统简洁不少。

2、一块arduino nano单片机。其它版本的也行,我一直用nano不是l因为我喜欢它,主要是上次一次买了五个,一直在杂物盒时放着。

3、一个DS3231时钟模块,用来为arduino提供时钟。

我用的是DS3231。这是一款高精度I2C实时时钟模块,带一个纽扣电池,用于在系统掉电时能够保存时间信息。这个模块具有集成的温度补偿晶体振荡器。它的寄存器能保存秒、分、时、星期、日期、月、年和闹钟设置等信息。还有月末日期和闰年补偿。时钟的工作格式为24小时或带AM/PM指示的12小时格式。我们的万年历需要从DS3231中取出年、月日、星期、时、分、秒及温度数据。
4、一个小喇叭,用来为闹钟发声用,这是我从一个旧收音机上拆下来的。
5、两个轻触按键开关配套两个220欧的电阻,用于手工设置日期时间的。

6、一块锂电池和一个充电模块,充电模块有两个作用:一是通过5v的手机充电器为锂电池充电,二是将锂电池的3.7v电压升到5v为单片机供电。

7、一个开关,用于控制电源通断。

二、连接示意图
1、供电系统示意图:
正常情况下,电池向充电板的5v输出提供电源,通过一个mini USB口给arduino供电,当我们用micro usb线给电池充电时,也会同时给arduino供电。

2、arduino和各模块的连接图:

三、程序源码
源码下载地址:
https://pan.baidu.com/s/1XuRiTCtXlPuleMD6E4Inbg
提取码:k63v

四、运行效果和操作说明
系统通电后,会在LCD显示相关信息,第一行为日期和星期缩写,第二行为时间和温度。但显示的日期时间为2000-01-01 00:00:00 星期一。这是DS3231的初始时间,我们需要自己设置时间。
长按设置键,2000的年份数字就会闪烁,按调整键就可以增加这个值,到99后再按就会回到00,完成后再次按设置键,就能设置月度,然后是日期、星期、时、分、秒都可以设置。
还有,DS3231可以保存两个闹钟,我们也可以设置闹钟时间,手机没电,就不拍图片了,各位自己折腾吧。

原文地址:https://blog.51cto.com/6273125/2451035

时间: 2024-10-09 03:07:54

用arduino 做一个万年历的相关文章

用arduino做一个智能垃圾桶

这几天工作忙得差不多了,有点时间继续折腾我的arduino,上次从TB买的arduino 套件中有一个人体热能感应模块,就是用来感应人体接近信号的.今天我们用这个东东来做一个简易的智能垃圾桶.要实现的功用是:当有人接近时,垃圾能用自动打开盖子,人离开时,盖子能自动关闭. 一.所需材料和工具: 1 Arduino单片机 我用的是Arduino Nano2 人体热能感应模块 我用的是一个杂牌的,但接线和使用方式和HC-SR501一样 3 舵机 SG904 翻盖式垃圾桶 最好是小一点的.5 手机充电头

React-Native做一个文本输入框组件

我又回来啦! 由于最近一直在做公司的项目,而且比较急.如今项目已经迭代到第三期,可以缓一缓了... 今天在公司里听前端的说,这个项目本来是用React-Native做的(去年10月份),但是做到一半发现坑太多,就中途放弃了,于是让我们android和iOS重新开发... 作为非常喜欢这个技术的我来说,表示相当的不服. 于是我打算利用闲暇时间做一个一模一样的出来,反正接口我都有(嘻嘻) 说实话,最近一直再用android做开发,而且时间也不宽裕,react-native有点生疏了. 好了,废话不多

做一个手机端页面时,遇到了一个奇怪的问题:字体的显示大小,与在CSS中指定的大小不一致

最近在做一个手机端页面时,遇到了一个奇怪的问题:字体的显示大小,与在CSS中指定的大小不一致.大家可以查看这个Demo(记得打开Chrome DevTools). 就如上图所示,你可以发现,原本指定的字体大小是24px,但是最终计算出来的却是53px,看到这诡异的结果,我心中暗骂一句:这什么鬼! 随后开始对问题各种排查:某个标签引起的?某个CSS引起的?又或者是某句JS代码引起的.通过一坨坨的删代码,发现貌似都不是.我不禁又骂,到底什么鬼!不过中间还是发现了一些端倪:当页面中的标签数量或者文本数

做一个微信语音点播系统

最近在做一个微信项目,接触到了微信公众平台.通过公众平台可以很方便的搭建一个功能完善的移动应用.昨天发现:开发者可使用手机号来申请接口测试帐号,体验高级接口. 这篇文章的应用将使用到高级接口中的语音识别,以及音乐回复接口.通过这两个接口,让大家体验一下语音点歌的魅力. 这个应用简单的来说:就是你向微信公众平台报一首歌名,微信公众平台返回这首歌曲给你听.本文将一步一步教你如何实现这个看似复杂的移动应用. 下面是我申请的测试账号的二维码,大家可以关注一下测试一下效果,不过测试账号的有效期只有一年,最

先做一个“小程序”——关于微信应用号的六大猜想

先做一个“小程序”——关于微信应用号的六大猜想 9月 21 日,苦等了9个多月的时间,应用号终于与我们见面了,命名为「小程序」. 01 为什么推出小程序? 考虑到小程序对整个APP市场的影响,毫无疑问会对现有的APP生态带来一定的冲击.但是,之所以推出小程序,最直接的原因可能是为了构建和扩充微信生态链,让微信更具开放性. 如我们所知,目前微信公众号分为三类: • 服务号,连接人和商品,目前很多电商企业,以及在微信端提供产品和服务的企业都用服务号. • 订阅号,微信官方的定位是阅读,连接人和资讯的

20151229:AJax :用类方式做一个查询

前台aspx代码不变,处理页面需要新建一个类,封装属性并在处理页面调用 新建类DB代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data;//引用命名空间 using System.Data.SqlClient; /// <summary> /// DB 的摘要说明 /// </summary> public class DB

今天来做一个PHP电影小爬虫。

今天来做一个PHP电影小爬虫.我们来利用simple_html_dom的采集数据实例,这是一个PHP的库,上手很容易.simple_html_dom 可以很好的帮助我们利用php解析html文档.通过这个php封装类可以很方便的解析html文档,对其中的html元素进行操作 (PHP5+以上版本)下载地址:https://github.com/samacs/simple_html_dom下面我们以 http://www.paopaotv.com 上的列表页 http://paopaotv.com

一个无锁消息队列引发的血案:怎样做一个真正的程序员?(二)——月:自旋锁

前续 一个无锁消息队列引发的血案:怎样做一个真正的程序员?(一)——地:起因 一个无锁消息队列引发的血案:怎样做一个真正的程序员?(二)——月:自旋锁 平行时空 在复制好上面那一行我就先停下来了,算是先占了个位置,虽然我知道大概要怎么写,不过感觉还是很乱. 我突然想到,既然那么纠结,那么混乱,那么不知所措,我们不如换个视角.记得高中时看过的为数不多的长篇小说<穆斯林的葬礼>,作者是:霍达(女),故事描写了两个发生在不同时代.有着不同的内容却又交错扭结的爱情悲剧,一个是“玉”的故事,一个是“月”

android如果用ListView做一个表格形式

效果图: 这样来写: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); ListView list = (ListView)findViewById(R.id.lvLinks); SquareItemAdapter adapter = new SquareItemAdapter(this)