当前位置: 首页 > news >正文

【物联网】基于树莓派的物联网开发【16】——树莓派GPIO控制LED灯实验

场景介绍

掌握GPIO引脚连接双色LED模块,编写Python程序代码,实现GPIO控制点亮双色LED灯!

窗口查看引脚编号

1、在终端输入指令:pinout
在这里插入图片描述
2、使用树莓派输入gpio readall命令查看pin状态
输入以下命令安装Git

sudo apt install git-core

安装树莓派的Wiring Pi库函数
树莓派要操作GPIO口也是需要借用库函数来实现的,名称叫做Wiring Pi,它使用C和C++开发并且可以被python、ruby或者PHP等其他语言包转。
树莓派的官方系统是没有自带Wiring Pi库的,需要我们自行安装
输入以下命令,将 WiringPi 文件下载到树莓派系统的当前目录

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

耐心等待其安装完成。下载完成后,我们可以在当前目录下看到一个WiringPi文件夹。
● 输入以下命令进入 WiringPi 文件夹目录。

cd WiringPi

● 输入以下命令安装 WiringPi。

sudo ./build

在这里插入图片描述
耐心等待安装完成,当我们看到下面的界面没有任何错误时候,就意味着安装完成。
3、查看gpio版本,控制台输入如下命令:

gpio -v

在这里插入图片描述

最后,我们可以看到树莓派各个管脚的状态,输入指令:

gpio readall

在这里插入图片描述

4、使用RPi.GPIO模块

RPi.GPIO是Python的一个模块,树莓派默认已经安装了该模块。下面介绍如何使用Python的RPi.GPIO模块控制GPIO。

1、导入RPi.GPIO模块

import RPi.GPIO as GPIO

2、设置指定模式(强制)管脚编号

GPIO.setmode(GPIO.BOARD)  #物理引脚编码

3、设置禁用警告
如果GRIO检测到一个引脚已经被设置成了非默认值,可以使用setwarnings()关闭警告信息。

GPIO.setwarnings(False)

4、设置引脚输入和输出
要将通道配置为输入:

GPIO.setup(channel, GPIO.IN)

要将通道设置为输出,请调用:

GPIO.setup(channel, GPIO.OUT)

为输出通道指定一个初始值:

GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)

将通道设置为输出时,同时设置多个通道:

channels = [18, 12, 13]

要读取通道的值:

GPIO.input(channel)  #返回 GPIO.LOW 或 GPIO.HIGH。

要设置配置为输出的引脚的值:

GPIO.output(channel, state)

其中状态可以是 GPIO.LOW 或 GPIO.HIGH。
还可以输出到通道列表或元组:

channels = [18, 12, 13] 

5、清理所有使用的通道
在程序结束时,最好清理通道,以便将所有引脚设置为默认状态。

GPIO.cleanup()

控制双色IED灯实验

硬件材料

1、树莓派4B
2、双色LED灯模块
3、GPIOT型扩展
4、面包板
5、杜邦线
6、Python程序

双色LED灯原理图

在这里插入图片描述

双色IED灯接线图

在这里插入图片描述

安装FileZilla软件

在这里插入图片描述

打开mu编辑器,编写python控制LED代码

在这里插入图片描述

Python控制GPIO的几个主要操作:

导入RPi.GPIO模块:

import RPi.GPIO as GPIO

设置引脚编码模式:

GPIO.setmode(GPIO.BOARD)/GPIO.setmode(GPIO.BCM)

设置引脚的操作模式(即输出还是输入) :

GPIO.setup(2, GPIO.OUT)/GPIO.setup(2, GPIO.IN)

设置引脚的高低电平:

GPIO.output(2, GPIO.HIGH)/GPIO.output(2, GPIO.LOW)

运行Python程序在这里插入图片描述

点击运行按钮后,会看到LED灯闪烁变色,每隔几秒切换灯光颜色。
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/598832.html

相关文章:

  • 卫星物联网:使用兼容 Arduino 的全新 Iridium Certus 9704 开发套件深入探索
  • MSOP/DIFOP端口 vs. IP地址的关系以及每个IP下面有什么自己的东西
  • JavaSE:对一门面向对象语言有一个初步认识
  • pytest官方Tutorial所有示例详解(二)
  • 这几天都是发癫写的
  • 计算机视觉技术剖析:轮廓检测、模板匹配及特征点匹配
  • 背包DP之分组背包
  • 读书笔记(王阳明心学)
  • 高可用架构模式——异地多活设计步骤
  • 物流仓储自动化升级:Modbus TCP与DeviceNet的协议融合实践
  • C++实战:人脸识别7大核心实例
  • 【数据结构初阶】--二叉树(二)
  • FreeSWITCH 简单图形化界面45 - 收集打包的一些TTS
  • 内网IM:BeeWorks私有化部署的安全通讯解决方案
  • 安全插座项目规划书
  • 【VSCode】复制到下一行快捷键
  • 2024年ASOC SCI2区TOP,基于强化学习教与学优化算法RLPS-TLBO+风电场布局优化,深度解析+性能实测
  • Go基础教程 从零到英雄:30分钟掌握Go语言核心精髓
  • Go语言管道Channel通信教程
  • 黑马点评系列问题之p44实战篇商户查询缓存 jmeter如何整
  • 2025.7.24 01背包与动态规划复习总结
  • 【Oracle】Oracle权限迷宫破解指南:2步定位视图依赖与授权关系
  • MySQL常见命令
  • 多线程 Reactor 模式
  • hcip思维导图(1)
  • GaussDB 数据库架构师(八) 等待事件概述-1
  • 阿里云ECS坑之dnf-makecache系统软件更新检测服务
  • 解决postgresql连接数不足
  • 五分钟了解Java 中的锁
  • SQL基础⑪ | 约束