目录
- 1. 前言
- 1.1 4B GPIO引脚排列
- 2. Python GPIO安装
- 3. 基于C语言的wiringPi安装
- ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️
- ❤️ 本篇创建记录 2023-01-01 ❤️
- ❤️ 本篇更新记录 2023-01-01 ❤️
- 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言 📝
- 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!
- 🔥 Arduino ESP8266教程累计帮助过超过1W+同学入门学习硬件网络编程,入选过选修课程,刊登过无线电杂志🔥
1. 前言
目前在树莓派上流行的 GPIO 开发环境主要有两种,Python GPIO 和基于 C 语言的 wiringPi。
1.1 4B GPIO引脚排列
可以在Raspberry Pi上访问方便的引用pinout
。此工具由GPIO Zero Python库提供,默认情况下,它安装在Raspbian桌面映像上,但不安装在Raspbian Lite上。
这里绿色部分就很灵性。
这个图就对应着IO口编号,并且属于BCM方式。默认通过Python编程控制。
2. Python GPIO安装
查看对应python版本
python --version 或者 python3 --version
输入命令:
sudo apt-get install python-dev
sudo apt-get -y install python3-rpi.gpio 或者 sudo apt-get -y install python-rpi.gpio
sudo pip3 install RPi.GPIO
LED灯blink1代码:
import RPi.GPIO as GPIO
import time
# blinking function
def blink(pin):
GPIO.output(pin,GPIO.HIGH)
time.sleep(1)
GPIO.output(pin,GPIO.LOW)
time.sleep(1)
return
# to use Raspberry Pi board pin numbers
GPIO.setmode(GPIO.BOARD)
# set up GPIO output channel
GPIO.setup(11,GPIO.OUT)
# blink GPIO17 50 times
for i in range(0,50):
blink(11)
GPIO.cleanup()
执行命令。
sudo python3 blink1.py
blink2.py:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
# BCM GPIO编号
pins = [17,18,27,22,23,24,25,4]
def setup():
# 采用BCM编号
GPIO.setmode(GPIO.BCM)
# 设置所有GPIO为输出状态,且输出低电平
for pin in pins:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.LOW)
def loop():
while True:
# 循环点亮
for pin in pins:
GPIO.output(pin, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(pin, GPIO.LOW)
time.sleep(0.5)
def destroy():
for pin in pins:
GPIO.output(pin, GPIO.LOW)
GPIO.setup(pin, GPIO.IN)
if __name__ == '__main__':
# 初始化GPIO
setup()
try:
loop()
except KeyboardInterrupt:
# 恢复GPIO口状态
destroy()
GPIO.cleanup()
执行命令。
sudo python3 blink2.py
3. 基于C语言的wiringPi安装
wiringPi适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiringPi的API函数和arduino非常相似,这也使得它广受欢迎。作者给出了大量的说明和示例代码,这些示例代码也包括UART设备,I2C设备和SPI设备等,毫无疑问地说wiringPi功能非常强大。
输入命令:
sudo apt-get install wiringpi
使用sudo apt-get install wiringpi 指令安装wiringpi包时,出现下面的提示:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package wiringpi is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'wiringpi' has no installation candidate
解决方案:
Gordon在该链接中写道树莓派Raspberry pi 4B版本中需要用到新的2.52的wiringpi包,安装方式为
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
新建一个名为blink.c文件
#include <wiringPi.h>
int main(void)
{
wiringPiSetup() ;
pinMode (0, OUTPUT) ;
for(;;)
{
digitalWrite(0, HIGH) ; delay (500) ;
digitalWrite(0, LOW) ; delay (500) ;
}
}
执行gcc编译命令。
gcc -Wall -o blink blink.c -lwiringPi
- -lwiringPi表示动态加载wiringPi共享库
- 使用GCC编译程序常用命令 参考资料
执行效果
sudo ./blink