按键控制led灯python程序_树莓派使用threading函数实现多按键控制LED灯
讲两个知识点。一个是关于上拉和下拉,另一个是关于threading函数。
1.上拉电阻和下拉电阻
上拉就是把一个不确定的信号通过一个电阻连接到高电位,这样在开关断开是信号为高电位,开关合上时信号为低电位。
同理,下拉就是把一个不确定的信号通过一个电阻连接到高电位。
具体可以参考这篇博客
2.threading函数
threading使python的多线程函数。能够帮助我们程序里同时进行多个进程。简单的说就是多个按键的信号输入函数能够同时进行,使得多个按键的信号能够同时输入。
threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
target 表示调用的目标函数。
args 表示目标函数的输入参数,元组形式。
在这里我只需要这两项
另外:group是线程组,默认为None,为以后拓展ThreadGroup类实现而保留;name是该线程名称;kwargs是目标函数的关键字参数字典
电路图
其中用到的管脚(BCM模式)为:
其他引脚模式可以输入gpio readall查找对照
线插好后:
程序部分如下:
首先sudo nano switch_LED.py#创建一个python程序
然后开始编写代码:
#导入函数库
import RPi.GPIO as GPIO
import time
import threading
#将GPIO引脚规则设置为BCM
GPIO.setmode(GPIO.BCM)
#关闭警告,否则程序运行时会发出警告
GPIO.setwarnings(False)
#设置按键为输入、下拉(即在开关断开时为低电平)
GPIO.setup(16,GPIO.IN,pull_up_down = GPIO.PUD_DOWN)
GPIO.setup(20,GPIO.IN,pull_up_down = GPIO.PUD_DOWN)
GPIO.setup(21,GPIO.IN,pull_up_down = GPIO.PUD_DOWN)
#设置LED灯负极为高电平,此时正极为高电平,不亮
GPIO.setup(17,GPIO.OUT,initial=GPIO.HIGH)
GPIO.setup(27,GPIO.OUT,initial=GPIO.HIGH)
GPIO.setup(22,GPIO.OUT,initial=GPIO.HIGH)
#定义LED灯开关函数
def on_switch(LED):
GPIO.output(LED,GPIO.LOW)#当负极为低电平时LED灯亮
def off_switch(LED):
GPIO.output(LED,GPIO.HIGH)
#定义按键控制LED灯函数
def thread(switch,LED):
try:
while True:
if GPIO.input(switch):
on_switch(LED)
else:
off_switch(LED)
time.sleep(0.1)
except Exception as e:#当出现错误时输出错误信息
print(e)
#使用多线程函数threading.Thread使三个按键同时工作
x=threading.Thread(target=thread,args=(16,17,))
#注意这里17后面那个逗号一定要,否则不是元组下同
x.start()
y=threading.Thread(target=thread,args=(20,27,))
y.start()
z=threading.Thread(target=thread,args=(21,22,))
z.start()
ctrl+o保存后输入sudo python switch_LED.py运行程序
最终成果:按哪哪亮,也可以同时亮。
按键控制led灯python程序_树莓派使用threading函数实现多按键控制LED灯相关推荐
- 树莓派能直接运行python程序_树莓派怎么运行python程序
树莓派运行Python程序的方法: 一.RaspBerry系统设置 1.首先在开发板没有通电情况下,连接硬件,以及项目中用到传感器.比如当前项目需要将LED灯插在面包板上,然后通过杜邦线将开发板和面包 ...
- 按键控制led灯python程序_按键控制led灯
//通过按键控制对应的led灯亮灭,按一下亮,再按一下灭,消抖时间20ms module key_led ( input clk , rst_n, input [2:0]key , output l ...
- 实验一 简单io应用—流水灯控制示例程序_【正点原子FPGA连载】第十章呼吸灯实验--领航者ZYNQ之linux开发指南...
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
- 在树莓派里面运行python代码_树莓派如何运行python程序
树莓派如何运行python程序 发布时间:2020-09-23 12:03:39 来源:亿速云 阅读:128 作者:小新 这篇文章主要介绍了树莓派如何运行python程序,具有一定借鉴价值,需要的朋友 ...
- 树莓派开机启动python文件_树莓派开机自启动Py文件
第一种办法先简单提一下,比较简单.但是不知道为什么我开机同时运行三个python脚本的时候就不能运行了. 输入命令: sudo nano /etc/rc.local 1 在exit 0上一行输入: p ...
- 树莓派python摄像头_树莓派摄像头Camera的使用
树莓派摄像头Camera的使用 一.安装 1.硬件安装 2.打开Raspberry Pi配置工具开启Camera 二. 如何通过命令行控制摄像头模块 现在您的相机模块已连接且软件已启用,请尝试使用命令 ...
- 树莓派 python 入门_树莓派新手入门教程
树莓派(Raspberry Pi)是学习计算机知识.架设服务器的好工具,价格低廉,可玩性高. 本文根据我的亲身经验,介绍如何从零开始,搭建一个树莓派服务器,控制 LED 灯.你会看到,树莓派玩起来实在 ...
- 云服务器运行python程序_云服务器部署python项目
发现python的一个识别验证码识别模块 muggle-ocr(https://pypi.org/project/muggle-ocr/) 成功率还是可以的,打算把把部署到云服务器上 这里记录一下部署 ...
- anaconda怎么运行python程序_第一个python程序,从安装python环境到人生第一个py脚本运行全过程...
文章目录 前言一.安装python运行环境 1.官网https://www.python.org下载安装包.exe 2.安装python二.python模块下载 1.配置pip环境变量 2.下载pyt ...
最新文章
- 程序架构探讨—007 应用服务器集群的伸缩性之链路负载均衡
- OpenCvSharp用掩膜来实现圆形的ROI区域
- IIS 承载的WCF服务失败
- Android实例-MotionSensor加速度(XE8+小米2)
- 将图片转换成16进制的代码
- 提交spark的bug的地方
- 接口500什么原因_80%小餐饮店几乎都“活“不过500天,为什么?都在这5个原因里...
- java+输出流++空值_一文搞定Java的输入输出流等常见流
- 阿里云新手必踩坑系列 - 安全组
- Atitit 文档资料处理重要类库与工具 跨语言api和第三方api跨语言 类库工具	大概功能	功能 Curl	httpclient	文件上传下载 数据传输rest doctotext.exe
- 玩转多元化主播打法,扶持达人红出圈,火山小视频的运营方法论
- pcb 受潮_怎样让PCB远离潮湿危害
- 键盘没有NumLock这个键 怎样解锁数字键盘?
- java实现三方登陆:微信登陆功能的实现
- 自监督学习中的 Contrastive Learning 对比学习(持续更新)
- Pitfall of OO Programming
- javaFX实现登录界面并跳转
- python测试开发课程_小蜗分享:Python测试开发全套学习路线
- javaee第一天作业
- UE4构建光照后,BSP创建的静态网格变全黑
热门文章
- 京东,需要第二个腾讯来救场
- 实验吧登陆一下好吗??WP
- Excel文档加密网络授权管理方案 - 加密Excel文档并通过服务器端授权管理
- 基于百度智能云api识别验证码
- 程序的编写过程和执行过程
- SpringCloud AlibabanacosOpenFeign简介
- lol手游内测服务器什么时候维护好,LOL手游第二次内测开启?网友预测:正式服春节前可以上线...
- Pytorch 在 forward 函数中加速神经网络。
- 小白都能轻松掌握,python最稳定的图片识别库ddddocr
- 2017年第八届蓝桥杯省赛B组 C/C++