1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 按键控制led灯python程序_树莓派使用threading函数实现多按键控制LED灯

按键控制led灯python程序_树莓派使用threading函数实现多按键控制LED灯

时间:2020-07-24 19:17:24

相关推荐

按键控制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运行程序

最终成果:按哪哪亮,也可以同时亮。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。