引脚复用配置工具
虽然从硬件上看,扩展出来的引脚只有40个,不过大部分引脚还可以配置成多种功能,这样延伸出来变化可就多了,那如何配置引脚的不同功能呢?
我们可以使用旭日X3派中提供的srpi-config工具进行配置。
直接在终端中输入这个指令,就可以看到这样的窗口,okay配置对应管脚为专用功能,disabled配置对应管脚为GPIO模式,按照自己的需要进行配置即可,配置完成后重启才会生效。
了解了GPIO的概念,接下来我们就要开始编程啦。
数字输入编程
首先我们来看下最基本的数字输入测试,读取一个按键的状态。
硬件接线
我们将按键的一边连接到旭日X3派的38号引脚上,这是一个GPIO的接口,另一边连接到39号引脚,也就是GND。
原理很简单,按键没按下时,导线是断开的,GPIO是默认的状态,按键按下后,导线就会导通,GPIO的状态变成了GND。
这样,我们就可以通过电平的变化,知道按键的状态啦。
运行例程
我们不妨来运行一下,看下实际效果是不是这样。
$ sudo python3 simple_input.py
我们将一个按键开关接到对应的管脚上, 然后连接到旭日X3PI当中,运行刚才的程序。之后我们按下或是松开按键时,他都会打印出对应的电平变化。
按下显示的就是LOW,也就是低电平,松开就是HIGH,也就是高电平。
代码解析
数字输入的功能实现啦,我们来看下代码是如何实现的。
simple_input.py:
#!/usr/bin/env python3
import Hobot.GPIO as GPIO
import time
# 定义使用的GPIO通道为38
input_pin = 38 # BOARD 编码 38
def main():
prev_value = None
# 设置管脚编码模式为硬件编号 BOARD
GPIO.setmode(GPIO.BOARD)
# 设置为输入模式
GPIO.setup(input_pin, GPIO.IN)
print("Starting demo now! Press CTRL+C to exit")
try:
while True:
# 读取管脚电平
value = GPIO.input(input_pin)
if value != prev_value:
if value == GPIO.HIGH:
value_str = "HIGH"
else:
value_str = "LOW"
print("Value read from pin {} : {}".format(input_pin, value_str))
prev_value = value
time.sleep(1)
finally:
GPIO.cleanup()
if __name__=='__main__':
main()
我们在Python中需要引入X3Pi的GPIO库,从而使用对应的GPIO功能。主函数里首先需要定义了一个变量来存储这个管脚的电平信号。
进行初始化,设置管脚的编码模式为BOARD模式,之后定义输入用的管脚,这里使用的是BOARD编码,因为他是第38个管脚,所以为38号。之后的话就会进入到循环当中,这样的一个函数就可以读出当前的电平值。
没有按下按键的时候,38管脚和GND是断开的,他就是高电平,按下按键时,就和GND导通了,这个管脚就会编程低电平。
如果电平值和上一次存储的不一致,后面的判断就会判断出是升高还是降低,最后会把结果打印出来。松开按键时同理。
全部0条评论
快来发表一下你的评论吧 !