最终效果:
写在前面
最近整理以前学校时候的东西,发现了很久之前的一块树莓派SAKS扩展板,正好手头有一个树莓派,就想着做点什么东西。这怎么写的写的就感觉在写日记啊?
不管这么多,折腾了一个下午,终于实现了一个数码管时钟,没有多少开发的工作量,基本上是踩了一些坑,网上各处找教程,找源码,最终是调通了。
系统准备
树莓派系统下载位置https://www.raspberrypi.org/software/operating-systems/ 。
下载别的可以控制IO的系统也是可以的,之所以要用Raspberry Pi OS系统,是为了后面使用SAKS扩展板SDK时方便。这个SDK5年没更新了,新的系统无法支持。
然后使用win32image软件将镜像烧入SD卡。
SAKS的扩展板,驱动LED用的是74HC595芯片,只要三根线能输出8路电平信号,而且这个芯片可以级联,可是输出更多路。驱动数码管用的是TM1637芯片。
然后下载SAKS树莓派扩展板的SDK,下载位置:https://github.com/nxez/SAKS-SDK,这个SDK已经5年不更新了,它所基于的RPi.GPIO也2年不更新了。不过对于最新的树莓派还是支持的。
而且这个是开源的,不支持也可以自己修改底层,改为使用wiringPi就可以。
实现过程
简单实现了一个钟表的功能,附带一个流水灯,基本上是把https://shumeipai.nxez.com/saks-diy-tutorials-digital-clock和https://shumeipai.nxez.com/saks-diy-tutorials-water-lights里面的代码组合在一起完成的。
它还有两个按钮,可以修改为切换流水灯模式等,还有一个蜂鸣器,可以修改为闹钟。
源码
t = time.localtime()
h = t.tm_hour
m = t.tm_min
if __dp:
SAKS.digital_display.show(("%02d.%02d" % (h, m)))
for i in [0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff]:
writeByte(i)
time.sleep(0.125)
else:
SAKS.digital_display.show(("%02d%02d" % (h, m)))
for i in [0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff]:
writeByte(i)
time.sleep(0.125)
__dp = not __dp