树莓派点灯笔记(论如何学好控制IO输出)
Posted 衾许°
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派点灯笔记(论如何学好控制IO输出)相关的知识,希望对你有一定的参考价值。
1.前言
继ROS学习的结束(虽然没有进行一个笔记的记录),和基于opencv和树莓派摄像头的一个人脸识别的学习的成功建立。接下来就是进行IO口控制的学习,最基本的也就是点灯了。
学习一切电子硬件从点灯,用树莓派点亮一个LED灯是非常简单的事情,但却非常重要,是利用GPIO控制外部硬件设备的基础,机器人的大部分功能都可以通过操纵GPIO来实现的。换句话说,能控制一个LED灯,就能让机器人动起来
2.GPIO引脚
树莓派与普通计算机最大的区别就在于它拥有若干个可编程的GPIO,可以用来控制外部设备、从外部设备获取信息或是和硬件进行数据交互等,因此了解各个GPIO引脚的功能和使用方法是非常重要的。树莓派GPIO接口已发布了3个版本,原始的两个版本仅有26个引脚,“+”型树莓派版本有40个引脚,本章及后续章节我们将主要介绍“+”型树莓派版本的GPIO。
也可以通过gpio readall的命令对GPIO进行查看
树莓派的引脚编码方式有两种:wiringPi和BCM,其实就是对应两个不同的库函数。
1)wiringPi:基于WiringPi库,是树莓派平台的库函数,类似于Arduino里面的wiring。
2)BCM:基于bcm2835库,是树莓派cpu芯片的库函数,相当于stm32的固件库一样,底层直接操作寄存器。
这里引用一张3b+的引脚图对应,两张图对比来看,引脚的对应关系就非常清晰了
三.硬件准备
一个LED灯或者带LED灯的扩展板,
这里引用一位博主的推荐:微雪的多功能扩展板Pioneer600(某宝上面找不到,要在微雪官网上面采购),总体来说,这款扩展板性价比不算高,但是对于初学者来说很友好,接口是pin对pin的,可以直接接上树莓派,常用的外设也比较全(LED\\UART\\IIC\\SPI\\按键\\显示屏),如果能把把这些外设都调完,那去做一些小项目是基本没有问题的了。
把LED接到树莓派任意一个GPIO口上面(如果是用的是普通插件LED灯,还要串一个1k左右的电阻,不然可能会把灯烧掉)。
限流电阻阻值计算:GPIO引脚的输出电压约为3.3V,高于LED上约1.7V的压降,如果直接串联,会有一个非常大的电流通过LED,这个电流通常大到可以损坏LED,甚至供电设备。因此,需要在LED和电源(GPIO引脚)间串联一个电阻限制电流,从而对LED和为其供电的GPIO引脚提供保护。不同厂家,不同颜色压降略有区别,我们假设所用LED的压降为1.8V,GPIO引脚的电流为3mA,限流电阻大小的计算方法如下:
R = ( 3.3V - 1.8V ) / 3mA = 500Ω
四.编写程序
1.编程方式
树莓派控制IO口的方式有很多种。
- 通过shell命令直接控制
- 通过Linux脚本控制
- 通过wiringPi库控制
- 通过bcm2835库控制
控制的方式有多种,编程的语音也有多种,C、C++、python、Java等等,所以就导致很多初学者无从下手,到底应该选择哪种方式呢?我本身从事的工作是以C语言为主的,一开始我是想从C开始突破,但是经过我一段时间的摸索,我认为树莓派最好的方式应该是Linux系统+python编程。确定了路线之后,我后面的编程教程也都是以python编程为主。
2.python编程
用python控制树莓派外设是通过python类库实现的,比如树莓派系统本身集成的RPi.GPIO就可以控制GPIO口。
树莓派官方的镜像基本都是自带python工具的,所以一般是不用再另外安装软件了。
2.1新建py文件
touch led.py
2.2编写程序
#!/usr/bin/python #脚本绝对路径定义
#-*- coding:utf-8 -*- #文件格式为utf-8
import RPi.GPIO as GPIO #导入RPi.GPIO库
import time #导入time库
GPIO.setwarnings(False) #禁用警告(可以不用)
GPIO.setmode(GPIO.BCM) #使用BCM编码的引脚号
GPIO.setup(26,GPIO.OUT) #根据自己LED灯接的引脚配置,我这里是26脚
try:
while True: #wile循环
GPIO.output(26,GPIO.HIGH) #引脚拉高
time.sleep(1) #延时1s
GPIO.output(26,GPIO.LOW) #引脚拉低
time.sleep(1) #延时1s
except:
print("except")
GPIO.cleanup()
编写代码的方式有很多种,根据自己的喜欢选择一种即可。
方式1:在树莓派命令窗口编辑
vim led.py // 用vim编辑
nano led.py // 用nano编辑
方式2:在树莓派可视化界面编辑
2.3运行
python led.py
方式2:可视化界面运行
运行结果:
LED每间隔1s闪烁一次。
以上是关于树莓派点灯笔记(论如何学好控制IO输出)的主要内容,如果未能解决你的问题,请参考以下文章
树莓派点灯笔记(论如何学好控制IO输出)(人脸识别IO控制)