树莓派4B学习笔记(5)—— 来个GPIO操作吧

一. GPIO库介绍

对于树莓派,现在有wiringPi,BCM2835,python三种库可以使用。

python

  • 开发语言:python
  • 简单介绍:树莓派官方资料中推荐且容易上手,毫无疑问的说python非常适合树莓派,树莓派也非常适合python。

wiringPI

  • 开发语言:C、C++
  • 简单介绍:功能很强大,适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiringPi的API函数和arduino非常相似,且作者也给出了很多示例代码,这也使得它广受欢迎。
  • 有关wiringPi的函数介绍,请查看我的另一篇博客《树莓派wiringPi库函数

BCM2835

  • 开发语言:C、C++
  • 简单介绍:BCM2835库是树莓派CPU芯片的库函数,相当于STM32的固件库一样,底层是直接操作寄存器。

二. 引脚编号方式

在这里插入图片描述

GPIO的编号有三种不同的方式:

【1】插座引脚编号方式
编号侧重P1插座侧,从上到下,从左到右。正如上图的Header一栏。

【2】BCM2835编号方式
编号侧重CPU寄存器,根据BCM2835的GPIO寄存器编号。正如上图BCM GPIO一栏。

【3】wiringPi编号方式
编号侧重实现逻辑,把扩展GPIO端口从0开始编号,这种编号方便编程。正如上图WiringPi一栏。

三. 来个GPIO操作吧

下面我们尝试通过编程使GPIO0(11号引脚)输出一个指定电平吧。

1. python库

先执行以下指令,安装一下库:

pip install RPi.GPIO
pip install spidev

安装完后,新建test.py文件,输入以下代码:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)  # BOARD编号方式,基于插座引脚编号
GPIO.setup(11, GPIO.OUT)  # 输出模式

# GPIO.setmode(GPIO.BCM)  # 若使用BCM编号方式,上两行代码应这样写
# GPIO.setup(17, GPIO.OUT)  # 对应为17号脚
 
while True:
    GPIO.output(11, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(11, GPIO.LOW)
    time.sleep(1)

然后终端输入python test.py运行文件。
通过万用表测量电平,可以看到11号脚每一秒置换一次电平。

2. wiringPI库

wiringPI库的常用函数介绍请看这里

Raspbian 安装
依次输入以下指令:

sudo apt-get install wiringpi
mkdir WiringPI            #创建WiringPI文件夹
cd WiringPI #
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

如下图所示:
在这里插入图片描述
Ubuntu 安装

git clone https://github.com/WiringPi/WiringPi.git
cd WiringPi
sudo ./build 

然后,执行gpio -v ,如果能看到GPIO版本信息,则安装成功。
在这里插入图片描述
然后执行gpio readall,可以查询到管脚信息。
在这里插入图片描述

(1)可视化编程方法

这种方法较为直接,在桌面新建c_test.c文件,双击打开,输入下面代码后保存。

#include <stdio.h>
#include <wiringPi.h>

int main(void)
{
	int LED = 0;
	wiringPiSetup();
	pinMode(LED, OUTPUT);  // 在wiringPi编号格式中,GPIO0编号为0
	printf("LED is blinking...\r\n");
	while(1)
	{
		printf("LED:%d is on \r\n", LED);
		digitalWrite(LED, HIGH);delay(1000);
		printf("LED:%d is off \r\n", LED);
		digitalWrite(LED, LOW);delay(1000);
	}
	return 0;
}

回到终端,依次输入:

cd Desktop/
gcc -o c_test c_test.c -lwiringPi   # 编译并生成可执行文件
./c_test    # 运行可执行文件

通过万用表测量电平,可以看到11号脚每秒置换一次电平。

-lwiringPi参数表示动态加载wiringPi共享库,丢失这个参数的话会报错。
终端中Ctrl + Z可以停止运行。

(2)命令行方法:

在终端依次输入:

touch c_test1.c
sudo nano c_test1.c

复制上面的C代码进去后保存。

格式会有点乱,但是不影响效果

然后继续输入:

gcc -o c_test c_test.c -lwiringPi
./c_test

通过万用表测量电平,可以看到11号脚每秒置换一次电平。

  • 9
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值