当前位置: 首页 > 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.dtcms.com/a/295292.html

相关文章:

  • 暑期算法训练.7
  • 97.2%灵敏度,桐树基因MSI NGS 2249 Panel——低肿瘤含量MSI检测的王者
  • CIRL:因果启发的表征学习框架——从域泛化到奖励分解的因果革命
  • LLM:Day1
  • 【Linux】linux基础开发工具(一) 软件包管理器yum、编辑器vim使用与相关命令
  • Web前端:JavaScript some()迭代方法
  • 前端如何利用多通道发布(MCP)打造高效AI驱动应用?
  • Hadoop磁盘I/O瓶颈的监控与优化:从iostat指标到JBOD vs RAID的深度解析
  • 2025真实面试试题分析-iOS客户端开发
  • Spring工程中集成多个redis数据源
  • iOS WebView 加载失败与缓存刷新问题排查实战指南
  • [iOS开发工具] 【iOS14以及以下】cydia商店按键精灵iOS新版V2.X安装教程
  • STM32 IAP升级失败之谜:时钟源配置的陷阱与解决方案
  • 【AJAX】XMLHttpRequest、Promise 与 axios的关系
  • JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
  • 【计算机网络】第六章:应用层
  • socket请求
  • 第二十章 W55MH32 WOL示例
  • B站 XMCVE Pwn入门课程学习笔记(5)
  • windows11通过wsl安装Ubuntu到D盘,安装docker及宝塔面板
  • 如何彻底清除服务器上的恶意软件与后门
  • 基础入门 [CMD] Windows SSH 连接服务器教程(系统自带方式)
  • Linux 下在线安装启动VNC
  • TCP 套接字--服务器相关
  • 杰理通用MCU串口+AT指令+485通讯工业语音芯片
  • PostgreSQL 跨库查询方法
  • Apache Flink 实时流处理性能优化实践指南
  • uniapp写app做测试手机通知栏展示内容
  • uni-appDay02
  • 从零用java实现 小红书 springboot vue uniapp(14) 集成阿里云短信验证码