Jetson Nano 入坑之路 ---- (6)GPIO使用(输入输出与回收)

1、安装 Jetson.GPIO 库

        Jetson.GPIO库 已经预装在Nano,如果卸载或者丢失,就需要自己重新安装一次了。

sudo pip install Jetson.GPIO
sudo pip3 install Jetson.GPIO

笔者在 Python2和Python3环境都分别安装了 Jetson.GPIO库。

2、代码中使用Jetson.GPIO 库 -- 配置引脚输出

首先来看一下 Jetson nano的 GPIO分布表。

 这个表把各个引脚的功能标注出来了。 I2C、SPI、UART……这些后面的文字陆续会讲解哦。

我们先用一个例子再来展开细讲

例子:控制 Pin37,也就是 gpio12 引脚,每5秒进行一次高低电平的反转。

import Jetson.GPIO as GPIO
import time

# Pin Definitions
output_pin = 37  #J41_BOARD_PIN37---gpio12/GPIO.B26/SPI2_MOSI

# Pin Setup:
# Board pin-numbering scheme
GPIO.setmode(GPIO.BOARD)
# set pin as an output pin with optional initial state of HIGH
GPIO.setup(output_pin, GPIO.OUT, initial=GPIO.HIGH)

curr_value = GPIO.HIGH

while True:
    time.sleep(5)
    # Toggle the output every second
    print("Outputting {} to pin {}".format(curr_value, output_pin))
    GPIO.output(output_pin, curr_value)
    curr_value ^= GPIO.HIGH

'''
# 等效写法
while True:
    time.sleep(5)
    # Toggle the output every second
    print("Outputting {} to pin {}".format(curr_value, output_pin))
    GPIO.output(output_pin, curr_value)
    if curr_value == GPIO.HIGH:
        curr_value = GPIO.LOW
    else:
        curr_value = GPIO.HIGH
'''

代码段中,

  • 首先导入 GPIO库
import Jetson.GPIO as GPIO
  • 设置GPIO模式
GPIO.setmode(GPIO.BOARD) 

# or 

GPIO.setmode(GPIO.BCM) 

# or 

GPIO.setmode(GPIO.CVM) 

# or 

GPIO.setmode(GPIO.TEGRA_SOC)

这是四种对引脚号的编码,属性树莓派的同学应该记得有个引脚对照表

 看一下这个表头,和设置语句中的内容,是不是秒懂。

 推荐就使用 BOARD编码,方便好认。

  • 然后初始化引脚
GPIO.setup(output_pin, GPIO.OUT, initial=GPIO.HIGH)

语句的功能描述:在此模式下,将 output_pin引脚设置为 输出模式,并且初始状态为 高电平。

  • 直接设置引脚高低电平
GPIO.output(output_pin, curr_value)

curr_value 的值 可为:GPIO.HIGHGPIO.LOW

3、代码中使用Jetson.GPIO 库 -- 配置引脚输入

        引脚输入多半是用在按键之类的上面。还是很有必要需要了解的。

  • 初始化引脚
GPIO.setup(curr_value, GPIO.IN)

读取引脚的值

GPIO.input(curr_value)

返回值为 GPIO.LOW 或者 GPIO.HIGH

4、程序结束,引脚通道清理工作

        在程序结束时最好清理引脚,将引脚设置为默认状态,下面的语句就可以清理所有引脚状态:

GPIO.cleanup()

        如果不想清除所有通道,也可以清除单个通道或通道列表或元组:

GPIO.cleanup(chan1) # 仅清理chan1
GPIO.cleanup([chan1, chan2]) # 仅清理chan1和chan2
GPIO.cleanup((chan1, chan2))  # 和上一句相同

  • 8
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星羽空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值