栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

树莓派点灯笔记(论如何学好控制IO输出)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

树莓派点灯笔记(论如何学好控制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的 可以直接接上树莓派 常用的外设也比较全 LEDUARTIICSPI按键显示屏 如果能把把这些外设都调完 那去做一些小项目是基本没有问题的了。

把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脚
 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闪烁一次。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号