硬件控制入门之树莓派GPIO操作----树莓派硬件控制学习笔记(一)

   日期:2021-02-02     浏览:241    评论:0    
核心提示:树莓派硬件控制学习笔记(一)第一章 树莓派硬件控制入门之GPIO口的操作文章目录树莓派硬件控制学习笔记(一)前言一、背景知识:树莓派引脚编号系统二、使用树莓派官方自带的RPi.GPIO 库(Python)操纵GPIO口1.引入库并命名要修改的GPIO口2.配置IO口为输入模式3.配置IO口为输出模式4.输出模式下的引脚高低电平操纵5.释放引脚三、使用Pigpio库(Python)操纵GPIO口1.启动守护进程2.引入库2.设置输出模式下电平3.释放引脚四、使用WiringPi库(C语言)操纵GPIO

树莓派硬件控制学习笔记(一)

第一章 树莓派硬件控制入门之GPIO口的操作

文章目录

  • 树莓派硬件控制学习笔记(一)
  • 前言
  • 一、背景知识:树莓派引脚编号系统
  • 二、使用树莓派官方自带的RPi.GPIO 库(Python)操纵GPIO口
    • 1.引入库并命名要修改的GPIO口
    • 2.配置IO口为输入模式
    • 3.配置IO口为输出模式
    • 4.输出模式下的引脚高低电平操纵
    • 5.释放引脚
  • 三、使用Pigpio库(Python)操纵GPIO口
    • 1.启动守护进程
    • 2.引入库
    • 2.设置输出模式下电平
    • 3.释放引脚
  • 四、使用WiringPi库(C语言)操纵GPIO口
    • 1.gcc编译器生成命令
    • 2.引入库及自检
    • 3.设置IO口模式
    • 4.设置输出模式下IO口高低电平
    • 5.释放引脚
  • 总结

前言

树莓派是最近越来越热门的一块开发板,不仅仅是入门级的开发,在越来越多的专业领域也可以见到它的身影,且它价格低廉,操作便捷,十分适合我们学生党,所以我打算使用树莓派开发一款机器人,以下是我的学习笔记。

要想控制一款开发板,首先就要做到控制其IO口的高低电平转换,而关于树莓派目前我所知的方法有如下三种,这三种库都不需要安装,在官方镜像中自带。

在这里顺便提供2020-5-27的树莓派官方镜像百度云下载,也是笔者正在使用的,亲测三种方法都可成功。

链接:https://pan.baidu.com/s/1zghbDwhnnfVyVY8yMhsJXQ
提取码:ggs1

一、背景知识:树莓派引脚编号系统

  1. BOARD编号系统。如下图中灰色部分,和树莓派物理引脚对应(USB接口面向自己,引脚丝印圈削角对应左上位置)

  2. BCM编号系统。pigpio库默认使用,如下图中黄色部分,不同版本的树莓派不一样可能要重新修改代码。

  3. wiringPi编号系统,此编号系统是wiringP库专用的编号,如下图中黄色部分。

这三种编号系统都可以通过下图一一对应。

二、使用树莓派官方自带的RPi.GPIO 库(Python)操纵GPIO口

1.引入库并命名要修改的GPIO口

在树莓派上运行python和c程序的方法很多文章都介绍过,这里不再赘述,直接上代码。

import RPi.GPIO  as GPIO #注意这里的i是小写=.=
GPIO.setmode(GPIO.BOARD) #指定为BOARD编号
#or
#GPIO.setmode(GPIO.BCM)#指定为BCM编号
pins_1=12

将要修改的GPIO.1,也就是BOARD编码下的12号针脚命名为pins_1,其位置具体见第一节的引脚图,注意这是在BOARD编码模式下,看灰色的部分。

2.配置IO口为输入模式

GPIO.setup(pins_1,GPIO.OUT)
#还可以设置上拉电阻(具体用处后面会介绍)
#GPIO.setup(pins_1,GPIO.IN,pull_up_down=GPIO.PUD_UP)
#下拉电阻
#GPIO.setup(pins_1,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)

输入模式相比于输出模式较难,后面的笔记将会介绍

3.配置IO口为输出模式

GPIO.setup(pins_1,GPIO.OUT)
#还可以设置为输出并初始为为HIGH或LOW
#GPIO.setup(pins_1, GPIO.OUT, initial=GPIO.HIGH)
#可以同时设置多个引脚
#chan_list = [ 11 ,12 ] 
                       #你可以用元组代替,即:
                       #chan_list =(11,12)
#GPIO.setup(chan_list, GPIO.OUT)

4.输出模式下的引脚高低电平操纵

GPIO.output(pins_1, state) 
#state可以是0 / GPIO.LOW / False --- 低电平
      #或者 1 / GPIO.HIGH / True --- 高电平

5.释放引脚

在程序执行完毕后一定要加入这一步,否则高电平引脚一旦不小心碰到GND将会烧毁树莓派。

GPIO.cleanup()

三、使用Pigpio库(Python)操纵GPIO口

pigpio是一个由C语言编写的库函数,并提供Python接口这个库的优点是软PWM频率上限比RPi库稳定,经过笔者用示波器实测,RPi库输出的PWM波占空比会出现0.5%左右的波动,而pigpio库的波动在0.1%左右,注意pigpio库使用的是BCM编码,所以无需再设置编码模式

1.启动守护进程

启动Linux终端,输入这条命令

sudo pigpiod

2.引入库

import pigpio
pi = pigpio.pi()

2.设置输出模式下电平

pi.write(4, 0) # 将4号引脚设置为低电平(GPIO.7)注意这是BCM编码
pi.write(4, 1) # 将4号引脚设置为高电平(GPIO.7)
pi.read(4)     # 获取目前4号引脚的电平(GPIO.7)

3.释放引脚

pi.write(4, 0)

四、使用WiringPi库(C语言)操纵GPIO口

wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等。java 的pi4j项目也是基于wiringPi的。
wiring库使用的编码模式是wiringPi编码。

1.gcc编译器生成命令

编译:

g++ -Wall -o LEDtest LEDtest.cpp  -lwiringPi         //使用C++编程 , -Wall 是为了使能所有警告,以便发现程序中的问题

gcc -Wall -o LEDtest LEDtest.c   -lwiringPi          //使用C语言编程

运行:

sudo ./LEDtest

2.引入库及自检

 #include<wiringPi.h>//引入库


 	if(wiringPiSetup() == -1)//利用库自带初始化函数自检
 	{ 
		printf("setup wiringPi failed !");
		return 1; 
	}

3.设置IO口模式

pinMode(7, OUTPUT);//将wiring库的7号引脚也就是GPIO.7设置为输出模式
//pinMode(7, INPUT);//设置为输入模式

输入模式相比于输出模式较难,后面的笔记将会介绍

4.设置输出模式下IO口高低电平

digitalWrite(7, HIGH);//设置为高电平
//digitalWrite(7, LOW);//设置为低电平

5.释放引脚

digitalWrite(7, LOW);//设置为低电平

总结

以上就是今天要讲的内容,本文仅仅简单介绍了树莓派GPIO口的操纵,后面的笔记还会详细讲解输入模式及PWM波形的产生。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服