【树莓派不吃灰】IO篇① GPIO 开发环境

在这里插入图片描述

  • ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件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

在这里插入图片描述
执行效果

sudo ./blink

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

单片机菜鸟爱学习

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

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

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

打赏作者

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

抵扣说明:

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

余额充值