前面成功的使用RPi.GPIO库,设置高低电平完成了LED灯和蜂鸣器的状态控制,因为RPi.GPIO没有提供对TM1637的支持,所以借助了已有的库完成了四位数码管的显示。从tm1637.py源码看,他实际也是使用了RPi.GPIO库。 虽然PRi.GPIO库只提供了简单的设置GPIO高低电平的功能,但是我们前面说过这是所有通信的基础,你可以自己通过设置高低电平来实现所有的协议通信。这么一说和我们只用0和1来编程有点象了。只要有0和1,你可以编写任何代码。而这里有高低电平你可以控制任何设备。所以这一篇打算简单分析一下TM1637的源码。

 

一 TM1637

 

先从高层次的TM1637开始分析。在控制LED和蜂鸣器时,我们使用一个高低电平就能控制设备,因为对于这样的设备来说,他们的通信协议非常简单。 高电平发光、低电平不发光。相比而言,TM1637数码的协议就负责很多。要想知道一个设备的通信协议就需要有设备的资料。

我们在网上买到的TM1637一般是下面这个样子。这是由CATALEX公司出的4-Digit Display。而一般称他为TM1637是指它背后的拿颗20针的控制芯片。整个数码管子是由TM1637芯片(U1)、4位数码管(U2)和4针接口(J1)组成的。

继续阅读

前面已经学习了一些树莓派系统和GPIO的基本知识了,现在可以开始动手做一些简单的东西了。因为一些外设的连接会涉及到一些电路的知识,如果操作不当可能会损坏外设或者是树莓派。所以在哦动手之前最好还是补充点电路相关的知识。我是花了点时间又把初中电路稍微复习了下,然后又乱七八糟看了点模拟电路、数字电路。所以最终应该也没有太多用处。

网上对于树莓派第一个项目基本就是接LED,然后控制。所以我第一个程序也使用LED,只不过想做的稍微复杂一点。 结合数码管和蜂鸣器来模拟十字路口的交通信号灯。使用的材料主要有:

  • 3个不同颜色的LED灯
  • TM1637四位数码管
  • 有源蜂鸣器
  • 若干100欧以上的电阻
  • 面包板和面包板连接线
  • 若干杜邦线

 

继续阅读