应用树莓派GPIO完成智能红绿灯系统
树莓派GPIO的应用---------智能红绿灯系统
一:树莓派、Python简介
1,树莓派: Raspberry Pi(中文名为“树莓派”,简写为 RPi,)是为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,其系统基于 Linux。树莓派自发布以来受到了广大创客以及教育从业者的青睐,更是由于便携、可拓展性强并拥有相对强大的功能,在电子、编程爱好者中得到了广泛的应用。现在最常用的型号为3B+型,并且在2019年6月更是发布了树莓派4代,拥有更强的功率以及拓展功能。下图为树莓派4代配置。
2,Python:面向对象的解释型计算机程序设计语言,语法简洁清晰,有丰富和强大的库,适用于Web开发和爬虫,同时因为语法简单,可用于青少年编程学习。
二:原理
1,树莓派GPIO
GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态(是高电平或是低电平)。GPIO是个比较重要的概念,可以通过GPIO口和硬件进行数据交互,控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如开关)等。
2,发光二极管原理
发光二极管两端分别为阴极和阳极,阳极(引脚长一点)接VCC,阴极接GND,能点亮发光二极管。
3,数码管原理
数码管大体分为七位数码管和八位数码管(区别在于有没有小数点位),数码管可以看成由多个发光二极管组成,同时控制不同的发光二极管工作。
当前实验为5161AS数码管~
4,开关原理
普通机械式开关,按下去连通,松开手后断开连接。通过上拉和下拉电阻控制检测端的高低电平。
如下图所示:上半部分为上拉电阻接法,PIN为检测端,开关不按下去检测到高电平,开关按下去检测到低电平;下半部分为下拉电阻接法,PIN为检测端,开关不按下去检测到低电平,开关按下去检测到高电平。
三、代码及概览图
import RPi.GPIO as GPIO
import timeLED_R = 17 # PGIO P17
LED_G = 27 #P27
LED_Y = 22 #p22KEY = 26 #P26PIN = [5,6,13,19,12,16,20,21]
# a b c d e f g dp
num1 = [6,13] #number1
num2 = [5,6,19,12,20]
num3 = [5,6,13,19,20]
num4 = [6,13,16,20]
num5 = [5,13,19,16,20]
num6 = [5,13,19,12,16,20]
num7 = [5,6,13]
num8 = [5,6,13,19,12,16,20]
num9 = [5,6,13,19,16,20]
num0 = [5,6,13,19,12,16]
PINS = [num0,num1,num2,num3,num4,num5,num6,num7,num8,num9]GPIO.setmode(GPIO.BCM)GPIO.setup(LED_R,GPIO.OUT) #set LED_R (P17) as OUT
GPIO.setup(LED_G,GPIO.OUT)
GPIO.setup(LED_Y,GPIO.OUT)GPIO.setup(KEY,GPIO.IN) #set KEY (P26) as INON = True
for g in PINS:GPIO.setup(g,GPIO.OUT)try:while(True):GPIO.output(LED_R,not ON) #Reset all LEDGPIO.output(LED_G,not ON)GPIO.output(LED_Y,not ON)GPIO.output(LED_R,ON) #set LED red ON,number nine to zerofor i in range(10):GPIO.output(PINS[9-i],ON)for j in range(10):if (GPIO.input(KEY) == True): #if button is pressed ,LED green ON and red offGPIO.output(LED_G,ON)GPIO.output(LED_R,not ON)time.sleep(3)GPIO.output(LED_G,not ON)GPIO.output(LED_R,ON)time.sleep(0.1)GPIO.output(PINS[9-i],not ON)GPIO.output(LED_R,not ON)GPIO.output(LED_Y,ON) #set LED yellow ON,number three to zerofor i in range(3):GPIO.output(PINS[2-i],ON)time.sleep(1)GPIO.output(PINS[2-i],not ON)GPIO.output(LED_Y,not ON)GPIO.output(LED_G,ON) #set LED green ON,number five to zerofor i in range(6):GPIO.output(PINS[5-i],ON)time.sleep(1)GPIO.output(PINS[5-i],not ON)GPIO.output(LED_G,not ON)
finally:GPIO.cleanup()
四、实现的功能
1,红绿灯功能:红色、黄色、绿色发光二极管循环亮,红灯9秒,黄灯三秒,绿灯5秒。灯亮期间数码管倒计时显示数字。
2,按钮功能:在红色灯期间可以按下按钮开关,按下一次后,红色灯关闭,暂停倒计时;同时绿色灯亮,持续三秒钟,三秒钟后红色灯亮,并继续倒计时。
应用树莓派GPIO完成智能红绿灯系统相关推荐
- 树莓派安装开源智能家居系统 Domoticz
前言 最近闲来无事开始折腾自己的智能家居系统,对比了几种比较流行的开源智能家居系统,觉得 Domoticz 更适合,Domoticz的官方中文文档,虽然不是很完善但还是可以参考一下.需要注意的是下文用 ...
- 树莓派GPIO引脚控制红绿灯与轰鸣器
参考: https://blog.csdn.net/weixin_44415639/article/details/114600919 https://blog.csdn.net/chenbo163/ ...
- 树莓派开发笔记(三)搭建智能家居系统(2) — Home Bridge + Home Assistant
搭建智能家居系统 搭建智能家居系统(2) 添加设备 Command Line 传感器组件 Scrape Sensor 组件 小米设备接入 Zigbee 设备(网关类设备) Yeelight 灯具 Wi ...
- Home Assistant + 树莓派:强大的智能家居系统
项目介绍:制作一个智能家居系统,可以通过web软件界面或天猫精灵控制家里的灯.空调等设备. 硬件:Raspberry Pi 4B 4GB.ESP8266.Grove Arduino Beginner ...
- 基于树莓派+STM32+OneNET云平台打造智能家居系统(一)硬件设计篇
本次分享的是之前一个课程设计, 会分为几篇博文进行分享.智能家居是目前研究与发展的一大热点,本设计是结合STM32微处理器/树莓派(Raspberry Pi)3b+.温湿度传感器.继电器以及ESP ...
- 树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇二:初步配置 Home Assistant 并连接小米设备与 HomeKit
树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇二:初步配置 Home Assistant 并连接小米设备与 HomeKit 通过本篇教程,你将完成对 H ...
- 树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇三:进阶配置 Home Assistant
树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇三:进阶配置 Home Assistant 通过本篇教程,你将完成对 Home Assistant 的进一 ...
- 树莓派开发笔记(二)搭建智能家居系统(1) — Home Bridge + Home Assistant
搭建智能家居系统 搭建智能家居系统(1) 介绍 软件安装 简便安装 Home Assistant Home Bridge Home Bridge - Home Assistant 相关配置 HASS ...
- 树莓派python智能家居英文参考文献_Home Assistant + 树莓派:强大的智能家居系统 · 小米篇...
小米的智能家居设备物美价廉,博得了国内外不少用户的喜爱.不要不信,在 Home Assistant 官方论坛上,米家设备相关话题的热度一直居高不下. 通过之前的 安装篇 与 设备接入篇,相信大家对 H ...
- python 网关控制家居_在树莓派上搭建智能家居网关
智能家居系统利用大量的物联网设备(如温湿度传感器.安防系统.照明系统)实时监控家庭内部状态,完成智能调节.人机互动.随着物联网技术的发展,其应用范围.数据规模.市场份额将进一步扩大,智能家居设备之间的 ...
最新文章
- hadoop错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
- html怎样添加日历控件,向日历控件中添加自定义内容
- NumPy来自现有数据的数组
- Xcode代码块功能
- C语言字符串相关一级指针内存模型
- python发邮件详解_python实现发送邮件详解
- 价格厚道!855最强机皇发布:看完心动了吗?
- 血脂测试软件,医院检查血脂一般用什么仪器
- history模式 nginx配置_Vue history模式Nginx配置
- 搜索(深度优先搜索与回溯) 经典例题题单+万字详解(C++)
- 项目开发文档编写规范
- kali linux win10桌面,一键伪装成Win 10,Kali Linux 2019年最终版重磅功能预览
- mysql 字段扩容_关于数据库扩容与缩容
- C#将数据导入固定word模板
- java 编程联系_《JAVA程序设计》结对编程联系_四则运算(第二周:整体性总结)...
- xp无法搜索计算机,xp系统的笔记本电脑为什么搜不到手机热点的信号
- 移动多媒体知识点期末总结
- 深富策略:周期股反弹有限 新能源是主基调
- PostgreSQL 10.1 手册_部分 III. 服务器管理_第 30 章 可靠性和预写式日志_30.4. WAL配置...
- 基于QT的多线程视频监控的实现(一)