8 位 LED 二进制计数器






4.09/5 (6投票s)
树莓派实现二进制计数器,最初为Arduino板开发。
引言
本文提供了一个由树莓派3和8个LED供电的简单二进制计数器实现。它与之前为Arduino板在上一篇文章中完成的工作非常相似 将Arduino连接到面包板上点亮LED。在这个项目中,我们将使用Python来编程板子。
对于这个项目,我们需要一个树莓派套件(我使用的是其中一个 CanaKits),一个面包板,8个LED,8个220欧姆电阻(可以是不同的,例如330等),以及9根公对母跳线。 如果您决定不远程连接到树莓派,那么您还需要一个带有HDMI电缆、鼠标和键盘的显示器。
设置工作环境
我使用的是树莓派3的默认安装,其中预装了Raspbian操作系统和Python。 确保您已安装最新的GPIO模块,因为代码使用它来写入GPIO引脚。
$ sudo apt-get update
$ sudo apt-get install python-rpi.gpio python3-rpi.gpio
我在我的树莓派上启用了Wi-Fi,并配置了 安全外壳 (SSH),以便我可以使用Putty从我的Windows机器远程连接到它。 这样,我们就不需要显示器、鼠标、键盘和以太网电缆来与设备通信。 我们唯一需要的电缆是电源线。
在 安装Samba 后,我们可以从Windows机器访问工作文件并在我们最喜欢的文本编辑器中编辑它们。 或者,我们仍然可以使用随分发版一起提供的nano编辑器在终端窗口中。
连接电线
我们需要8根电线将GPIO引脚通过各自的电阻连接到相应的LED(加上1根用于地线的电线)。 这里,我决定使用33号引脚作为位0,37号引脚作为位1,等等(参见代码)。 下面的布局显示了哪些引脚可用。
Using the Code
在代码中,我们首先将8个选定的引脚设置为输出模式。 然后在循环中,我们通过应用相应的位掩码提取计数器的每个位的当前值,并设置映射到该位的单个GPIO引脚。
# counter.py
import RPi.GPIO as GPIO
import time
print "=== Binary counter ==="
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD) # access pins by their numbers
# Configure 8 pins to output mode
GPIO.setup(33, GPIO.OUT) # pin 33 for bit 0
GPIO.setup(37, GPIO.OUT) # pin 37 for bit 1
GPIO.setup(7, GPIO.OUT)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)
GPIO.setup(19, GPIO.OUT)
GPIO.setup(21, GPIO.OUT) # pin 21 for bit 7
cnt = 0
print "Press Ctrl-C to exit"
try:
while True:
GPIO.output(33, cnt & 0x01) # set bit 0
GPIO.output(37, cnt & 0x02)
GPIO.output(7, cnt & 0x04)
GPIO.output(11, cnt & 0x08)
GPIO.output(13, cnt & 0x10)
GPIO.output(15, cnt & 0x20)
GPIO.output(19, cnt & 0x40)
GPIO.output(21, cnt & 0x80) # set bit 7
time.sleep(0.1) # wait 100 msec
cnt += 1 % 256 # increment counter up to 255, then reset to 0
except KeyboardInterrupt:
GPIO.cleanup()
如果您将代码保存到counter.py文件中,只需运行此命令即可启动计数器
python counter.py
就这样。 祝您编码愉快!