当前位置: 首页 > 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.xdnf.cn/news/1178659.html

相关文章:

  • 使用 eBPF 实时捕获 TCP 重传告警:精准定位网络抖动问题
  • 亚马逊云科技:引领云计算新时代,开启无限可能
  • OSPF多区域介绍
  • Android Telephony UrspRule 介绍
  • Java设计模式-适配器模式
  • Docker4-容器化企业级应用
  • 不同头会关注输入序列中不同的部分和不同维度所蕴含的信息,这里的头和嵌入维度不是对应的,仅仅是概念上的吗?
  • 调节广告adload的算法:Contextual Bandits、多臂老虎机 Policy Gradient、Q-learning
  • C++ 中打开文件的多种方式及相关流类
  • 【重学数据结构】哈希表 Hash
  • 【学习路线】JavaScript全栈开发攻略:前端到后端的完整征程
  • MySQL高可用部署
  • MySQL的底层原理--InnoDB记录存储结构
  • Mysql大数据架构设计:当表中数据超过800万时,对数据表进行分表操作,以及分页查询优化详解
  • C++扩展 --- 并发支持库(下)
  • 【YOLO系列】YOLOv4详解:模型结构、损失函数、训练方法及代码实现
  • PA333H-2K功率计:光伏行业高压测试“刚需”
  • 智慧驾驶疲劳检测算法的实时性优化
  • ARM 学习笔记(四)
  • 嵌入式软件--stm32 DAY 9 定时器
  • Springmvc的自动解管理
  • 一文说清楚Hive中常用的聚合函数[collect_list]
  • 一文读懂 HTTPS:证书体系与加密流程
  • Percona pt-archiver 出现长事务
  • GISBox实操指南:如何将IFC文件高效转换为3DTiles格式‌‌
  • 【MAC电脑系统变量管理】
  • 基于Zig语言,opencv相关的c++程序静态交叉编译
  • 微服务-springcloud-springboot-Skywalking详解(下载安装)
  • 设置后轻松将 iPhone 转移到 iPhone
  • 基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)