AM、Arduino、CLK、CS1、CS2、DIN、DS3231、GND、GitHub、IDE、LED、MAX、MAX72、MAX7219、MCU这几个词我得记好,别搞混了。我准备拿Arduino UNO,加上两块LED矩阵和RTC模块,来做个能在数码和二进制之间快速切换的时钟。这个4合1多功能时钟有数码显示、二进制显示,还能切换24小时制和12小时制,甚至还支持温度显示。这次项目里,我会用单片机编程控制这个时钟,给它加上状态机的逻辑,让它能智能切换模式。同时,我会把两块MAX7219并联到Arduino的第5到第8个引脚上,DIN接数据输入,CLK接时钟信号,CS1控制第一块矩阵,CS2控制第二块。RTC模块的GND、VCC、SCL、SDA分别接到Arduino对应的引脚上。DS3231版本的RTC模块还可以读取室温,给它接一个温度引脚到Arduino的模拟口A0就行了。接下来我要在IDE里引用MAX72XX和RTC相关库,这样时钟和矩阵才能正常工作。软件方面我打算用有限状态机结构来写代码,用一个字节来区分不同状态,每秒刷新一次显示。RTC会把时间存进内部RAM里,下次开机就可以自动读取记忆下来的时间了。还可以在矩阵外围加上WS2812B LED灯带来营造氛围效果。 这个时钟不仅有数字和二进制显示模式,还能切换24小时制和12小时制。给老人小孩用也很方便。用它来做氛围灯也不错。需要注意的是跳线顺序要和原理图一致,否则矩阵可能会出现反色或者不亮的情况。如果秒针跳变了,先检查一下RTC电池是不是没电了。如果还是不行就试着重新烧录程序并复位RTC。二进制显示时要注意把0到9的点阵图形手动镜像翻转一下。 这个项目已经开源了,在GitHub上可以找到代码和资料。如果你想自己动手做一个这个时钟的话可以参考一下我的教程和代码。动手试试吧!