地平线机器人数字输入编程

描述

引脚复用配置工具

虽然从硬件上看,扩展出来的引脚只有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导通了,这个管脚就会编程低电平。

如果电平值和上一次存储的不一致,后面的判断就会判断出是升高还是降低,最后会把结果打印出来。松开按键时同理。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分