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))  # 和上一句相同

你可能感兴趣的:(Jetson,nano,入坑锦集,ubuntu,嵌入式硬件)