讲两个知识点。一个是关于上拉和下拉,另一个是关于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灯相关推荐

  1. 树莓派能直接运行python程序_树莓派怎么运行python程序

    树莓派运行Python程序的方法: 一.RaspBerry系统设置 1.首先在开发板没有通电情况下,连接硬件,以及项目中用到传感器.比如当前项目需要将LED灯插在面包板上,然后通过杜邦线将开发板和面包 ...

  2. 按键控制led灯python程序_按键控制led灯

    //通过按键控制对应的led灯亮灭,按一下亮,再按一下灭,消抖时间20ms module key_led ( input clk , rst_n, input [2:0]key , output  l ...

  3. 实验一 简单io应用—流水灯控制示例程序_【正点原子FPGA连载】第十章呼吸灯实验--领航者ZYNQ之linux开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  4. 在树莓派里面运行python代码_树莓派如何运行python程序

    树莓派如何运行python程序 发布时间:2020-09-23 12:03:39 来源:亿速云 阅读:128 作者:小新 这篇文章主要介绍了树莓派如何运行python程序,具有一定借鉴价值,需要的朋友 ...

  5. 树莓派开机启动python文件_树莓派开机自启动Py文件

    第一种办法先简单提一下,比较简单.但是不知道为什么我开机同时运行三个python脚本的时候就不能运行了. 输入命令: sudo nano /etc/rc.local 1 在exit 0上一行输入: p ...

  6. 树莓派python摄像头_树莓派摄像头Camera的使用

    树莓派摄像头Camera的使用 一.安装 1.硬件安装 2.打开Raspberry Pi配置工具开启Camera 二. 如何通过命令行控制摄像头模块 现在您的相机模块已连接且软件已启用,请尝试使用命令 ...

  7. 树莓派 python 入门_树莓派新手入门教程

    树莓派(Raspberry Pi)是学习计算机知识.架设服务器的好工具,价格低廉,可玩性高. 本文根据我的亲身经验,介绍如何从零开始,搭建一个树莓派服务器,控制 LED 灯.你会看到,树莓派玩起来实在 ...

  8. 云服务器运行python程序_云服务器部署python项目

    发现python的一个识别验证码识别模块 muggle-ocr(https://pypi.org/project/muggle-ocr/) 成功率还是可以的,打算把把部署到云服务器上 这里记录一下部署 ...

  9. anaconda怎么运行python程序_第一个python程序,从安装python环境到人生第一个py脚本运行全过程...

    文章目录 前言一.安装python运行环境 1.官网https://www.python.org下载安装包.exe 2.安装python二.python模块下载 1.配置pip环境变量 2.下载pyt ...

最新文章

  1. 程序架构探讨—007 应用服务器集群的伸缩性之链路负载均衡
  2. OpenCvSharp用掩膜来实现圆形的ROI区域
  3. IIS 承载的WCF服务失败
  4. Android实例-MotionSensor加速度(XE8+小米2)
  5. 将图片转换成16进制的代码
  6. 提交spark的bug的地方
  7. 接口500什么原因_80%小餐饮店几乎都“活“不过500天,为什么?都在这5个原因里...
  8. java+输出流++空值_一文搞定Java的输入输出流等常见流
  9. 阿里云新手必踩坑系列 - 安全组
  10. Atitit 文档资料处理重要类库与工具 跨语言api和第三方api跨语言 类库工具 大概功能 功能 Curl httpclient 文件上传下载 数据传输rest doctotext.exe
  11. 玩转多元化主播打法,扶持达人红出圈,火山小视频的运营方法论
  12. pcb 受潮_怎样让PCB远离潮湿危害
  13. 键盘没有NumLock这个键 怎样解锁数字键盘?
  14. java实现三方登陆:微信登陆功能的实现
  15. 自监督学习中的 Contrastive Learning 对比学习(持续更新)
  16. Pitfall of OO Programming
  17. javaFX实现登录界面并跳转
  18. python测试开发课程_小蜗分享:Python测试开发全套学习路线
  19. javaee第一天作业
  20. UE4构建光照后,BSP创建的静态网格变全黑

热门文章

  1. 京东,需要第二个腾讯来救场
  2. 实验吧登陆一下好吗??WP
  3. Excel文档加密网络授权管理方案 - 加密Excel文档并通过服务器端授权管理
  4. 基于百度智能云api识别验证码
  5. 程序的编写过程和执行过程
  6. SpringCloud AlibabanacosOpenFeign简介
  7. lol手游内测服务器什么时候维护好,LOL手游第二次内测开启?网友预测:正式服春节前可以上线...
  8. Pytorch 在 forward 函数中加速神经网络。
  9. 小白都能轻松掌握,python最稳定的图片识别库ddddocr
  10. 2017年第八届蓝桥杯省赛B组 C/C++