🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 树莓派引脚图 >[info] 在学习树莓派GPIO之前必须先了解树莓派的40pin引脚的定义,可以观看我们的视频 👉[树莓派GPIO使用讲解\_哔哩哔哩\_bilibili](https://www.bilibili.com/video/BV1zr4y1E7Ng?spm_id_from=333.337.search-card.all.click&vd_source=1ce2f03cf716521eb16099441378dfb0) ![](http://qiniucn.16302.com/dcc19d33257207966ec8281da889bc8f) # 使用GPIO ## 导入GPIO模块 ```python import RPi.GPIO as GPIO ``` ## 设置针脚编码 >[info] 不懂针脚编码的可以去观看GPIO使用讲解视频,这里我们使用Board编码 ```python GPIO.setmode(GPIO.BOARD) # Board编码 ``` 也可以按需要使用BCM编码 ```python GPIO.setmode(GPIO.BCM) # BCM编码 ``` **wiringPi**编码适用于C编程,有需求的可以自行了解。 ## 设置引脚功能 设置为**输入引脚** ```python pin=7 GPIO.setup(pin, GPIO.IN) # 这样表示设置引脚7为输入引脚,即可得到输入的数据。 ``` 或者设置为**输出引脚** ```python pin=7 GPIO.setup(pin, GPIO.OUT) # 这样表示设置引脚7为输出引脚,即控制传感器电平。 ``` ## 输出信号 ```python pin=7 GPIO.setup(pin, GPIO.OUT) GPIO.output(pin, True) # 向7号引脚输出高电平 ``` ## 接收信号 >[warning] 执行此操作时请先设置为输入状态`GPIO.setup(pin, GPIO.IN)` ```python pin = 7 GPIO.setup(pin, GPIO.IN) pindata = GPIO.input(pin) print(pindata) # 将引脚数据打印出来 ``` 也可以使用判断的方式 ```python pin = 7 GPIO.setup(pin, GPIO.IN) if GPIO.input(pin): print(GPIO.input(pin)) else: print("低电平") # 也可用pass函数跳过 ``` ## 恢复默认状态 >[info] 在程序运行完成后恢复为默认状态,避免误操作 >[warning] 如果你的程序稳定且不需要频繁修改引脚状态可以忽略 ```python GPIO.cleanup() # 清理状态,默认恢复为IN状态 ``` ## 😺 信号输入示例程序 >[info] 建议插件目录下编写 `gpiotest.py` 文件用于测试 ```python import RPi.GPIO as GPIO import time pin = 7 # 设置pin为7 GPIO.setmode(GPIO.BOARD) # Board编码 GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) def get_GPIO(): pindata = GPIO.input(pin) # 将得到的数据值给到变量 print(pindata) # 打印pin值变量 while True: get_GPIO() time.sleep(0.1) # 每隔0.1秒刷新一次值 ``` ## 😺 信号输出示例程序 ```python import RPi.GPIO as GPIO import time state = 0 GPIO.setmode(GPIO.BOARD) # Board编码 def True_GPIO(): # 设置为True状态 pin = 7 GPIO.setup(pin, GPIO.OUT) GPIO.output(pin, True) def False_GPIO(): # 设置为False状态 pin = 7 GPIO.setup(pin, GPIO.OUT) GPIO.output(pin, False) while True: time.sleep(2) # 循环,每两秒切换一次状态 if state == 0: state = 1 True_GPIO() else: state=0 False_GPIO() ```