GPIO不止有输入功能,还有输出功能,大家应该经常看到电子设别上的LED灯吧,这就是典型的IO输出控制的设备,我们也来试一试。
硬件接线
我们将一个LED灯的正极连接到了2号引脚,这是5V电源,用来给LED供电的,不过LED电阻小,为了不至于烧坏,我们最好还是在电路中串联一个电阻来限制电流大小。
接下来,当LED的负极接到GND,也就是电源的0V上时,LED两边会因为有电势差而被点亮;当LED的负极也连接到高电平,也就是5V的时候,会因为两边没有电势差,也就不会被点亮。
这个负极的电平信号我们就用GPIO来输出,所以我们把LED的负极连接到任意的GPIO引脚上,比如38号,将这个引脚设置为输出模式,当输出高电平时,灯就会熄灭,输出低电平,灯就会被点亮。
把这两个动作放到一个循环中,就可以实现闪烁的功能啦。
运行示例程序
快来运行例程试一试吧,按照刚才的设置,将实物连接完成,然后连接到X3Pi,运行程序,就可以看到这个LED就会开始闪烁了。
$ sudo python3 simple_input.py
代码解析
simple_out.py:
#!/usr/bin/env python3
import Hobot.GPIO as GPIO
import time
# 定义使用的GPIO通道为38
output_pin = 38 # BOARD 编码 38
def main():
# 设置管脚编码模式为硬件编号 BOARD
GPIO.setmode(GPIO.BOARD)
# 设置为输出模式,并且初始化为高电平
GPIO.setup(output_pin, GPIO.OUT, initial=GPIO.HIGH)
# 记录当前管脚状态
curr_value = GPIO.HIGH
print("Starting demo now! Press CTRL+C to exit")
try:
# 间隔1秒时间,循环控制LED灯亮灭
while True:
time.sleep(1)
GPIO.output(output_pin, curr_value)
curr_value ^= GPIO.HIGH
finally:
GPIO.cleanup()
if __name__=='__main__':
main()
全部0条评论
快来发表一下你的评论吧 !