使用LED矩阵的Arduino二进制时钟的制作教程

电子说

1.3w人已加入

描述

步骤1:读取BCD二进制时钟

所描述的时钟使用二进制编码的十进制(bcd)显示方法,首先进行描述。在这种方法中,时间的每个数字都被隔离并显示为二进制数。例如,一分钟的37分钟显示为0000 0011(二进制3)和0000 0100(二进制7)。

每个分段的每个数字(小时,分钟,秒)占据一列。空白列分隔每个对,则使用8列。有时候事情不是很整洁吗?

步骤2:所需的设备

Arduino。

我使用了Nano,因为我可以将所有东西都放在一块面包板上。我购买了一个品牌外的产品。

显示

一个MAX 72xx LED矩阵分支板。请注意,MAX72xx引脚可能因型号而异,请检查)。

电源,地线,三个信号跳线。

我颠倒安装了地雷,因此在其控制引脚上使用了公母跳线。

I2C DS3231实时时钟(RTC)转接板。

电源,地线和两条信号线。

小面包板。

我将所有东西都挤在了400针板上。

用于Arduino的电池或交流适配器(未显示)。

第3步:接线

MAX72xx的五个引脚根据ledControl库页面进行接线。我的7219的针脚顺序与所述的不同。

VCC-+ 5V

GND--接地

DIN(数据输入)-D10

CS(在库中称为“ LOAD”。)-D11

CLK(时钟)-D12

时钟已连接到I2C引脚(检查您的Arduino模型)。对于Nano 。..

VCC-+ 5V

GND--接地

SDA--模拟4

SCL--模拟5

步骤4:关于算法的注释

LED矩阵的每一列均表示一位。分离。将小时,分钟和秒转换为两位数是微不足道的。..

通过将小时除以10(没有余数)来将第一个数字隔离。

将第二个模块除以10(仅余数)()(仅余数)。

我们点亮一列LED,以对应于适当数字的二进制表示形式。为此,我们使用ledcontrol.h库的setRow()函数,该函数需要三个参数

矩阵编号(每个实例库最多可处理8个)。计数从0开始,这就是本草图中使用的数字,因为我们只有一个矩阵。

列号(从左侧开始,编号为0-7)。如所使用的,列0和1分别对应于小时的第一位和第二位数字。

从上到下描述要打开的LED的字节(1 = on)。

小时/分钟/秒个位数字以十进制整数形式返回值(即0-9)。必须使用byte()函数将它们转换为所需的字节(二进制)值(以编程方式来说就是“转换”)。

SetRow(),在我的矩阵上,将LED填充为与输入/输出引脚,但最低有效位(“底部”)更靠近输出引脚-我将其颠倒安装。 (尝试使用您自己的矩阵LED)。请注意,您需要按位数学求逆顺序,以便将LED矩阵右侧向上安装,如果要横向安装LED矩阵,请使用SetColumn函数。

第5步:草图

第6步:改进和注释

构建并运行起来后,我发现令人惊讶的是,显示屏的体积很小,这当然是LED矩阵尺寸的函数。

我有一个座钟,如果可以找到一个便宜的钟表的话,我会拉出马达外壳,用一圈烟熏玻璃或丙烯酸玻璃代替钟面。 (我将尝试在当地的自动窗户着色处停下来并要求报废)。因此,LED矩阵的电路板和芯片将隐藏起来。另一个可能的方法是切割一个染色或涂漆的木质圆圈,以形成很好的对比度,并在其中切出一个方孔,以刺穿LED面。我怀疑我的卷轴看到了技能,因此,我需要伪造某种边框。也许是黄铜的脸?我可以使用飞刀,立铣刀或研磨复合物在车床上制作出光滑的光洁度,或在漂亮的涡旋形图案上进行加工,但需要找出一种方法来在导孔中获得相对直角,而立铣刀则无法实现, -也许是纵切锯。

目前,可以通过重新编程Arduino Nano来调整时间,这是最不切实际的。可以添加三个按钮,每个分段分别为一个小时,分钟,秒,每个按钮分别按小时,分钟和秒,然后按相应的按钮将当前分段增加一个单位。那是最简单的编程。但是,一个按钮会更优雅:长按进入小时数调整模式,短按递增,等等。

我想将草图转移到ATTiny85并收回我的Nano板(也更容易转移到时钟盒中。)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分