嵌入式人工智能(6-树莓派4B按键输入控制LED)

news2024/12/28 6:57:38

1、按键

按键的原理都是一样,通过按键开关的按下导通,抬起断开的情况,GPIO引脚来检测其是否有电流流入。GPIO有input()方法,对于GPIO引脚检测电流,不能让其引脚悬空,否则引脚会受周边环境电磁干扰产生微弱电流,导致GPIO输入时高时低,,当程序不断检测其输入变化时,会发现按键不断地断开闭合,因此解决这个问题,需要采用上拉或下拉电阻将其电平钳位住。

2、上拉电阻

如果是采用上拉电阻,则按键按下,引脚会检测到一个下降沿。如果是采用下拉电阻,则按键按下,引脚会检测到一个上升沿。具体采用上拉还是下拉电阻根据实际情况而定。

3、实验接线图

我这边有独立按键与流水灯模块,采用的是上拉电阻方式,因此不需要自己连接电阻,没有的同学根据上图来接,电阻470欧即可。实现功能,GPIO11接LED,GPIO13和15分别接2个按键Key1和Key2。要求,按下按键一,LED点亮,按下按键二LED熄灭。

4、实验一代码

import RPi.GPIO as GPIO
import time

# 指定编号规则为BOARD
GPIO.setmode(GPIO.BOARD)

# 设置物理引脚11负责输出电压
GPIO.setup(11, GPIO.OUT)

# 关闭警告
GPIO.setwarnings(False)

# 设置输入引脚
channel1 = 13
channel2 = 15

# 设置GPIO输入模式, 使用GPIO内置的上拉电阻, 即开关断开情况下输入为HIGH
GPIO.setup(channel1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(channel2, GPIO.IN, pull_up_down=GPIO.PUD_UP)


try:
    GPIO.output(11, GPIO.HIGH) 
    while True:
        # 如果检测到电平FALLING, 说明开关闭合
        if GPIO.input(channel1)==GPIO.LOW:
            GPIO.output(11, GPIO.LOW)
        if GPIO.input(channel2)==GPIO.LOW:
            GPIO.output(11, GPIO.HIGH)  
        # 10毫秒的检测间隔
        time.sleep(0.01)
 
except Exception as e:
    print(e)

# 清理占用的GPIO资源
GPIO.cleanup()

5、实验二代码

接线和实验一一样,要求按键1按下LED亮,松开LED灭。按键2按下,释放资源,退出程序。这样 如果要中止程序运行,就不用按键盘crtl+ C来中止了。

import RPi.GPIO as GPIO
import time

# 指定编号规则为BOARD
GPIO.setmode(GPIO.BOARD)

# 设置物理引脚11负责输出电压
GPIO.setup(11, GPIO.OUT)

# 关闭警告
GPIO.setwarnings(False)

# 设置输入引脚
channel1 = 13
channel2 = 15

# 设置GPIO输入模式, 使用GPIO内置的上拉电阻, 即开关断开情况下输入为HIGH
GPIO.setup(channel1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(channel2, GPIO.IN, pull_up_down=GPIO.PUD_UP)

try:
    GPIO.output(11, GPIO.HIGH) 
    while True:       
        # 如果检测到电平FALLING, 说明开关闭合
        if GPIO.input(channel1)==GPIO.LOW:
            GPIO.output(11, GPIO.LOW)
        else:
            GPIO.output(11, GPIO.HIGH)  
        if GPIO.input(channel2)==GPIO.LOW:
            GPIO.cleanup()
            exit()
        # 10毫秒的检测间隔
        time.sleep(0.01)
        # if Led_Flag==True:
        #     GPIO.output(11, GPIO.LOW)
        # else:
        #     GPIO.output(11, GPIO.HIGH)    

except Exception as e:
    print(e)

# 清理占用的GPIO资源
GPIO.cleanup()

如果想要按下1亮,再按下1灭,那么需要定义个变量,来改变此变量的值,从而控制LED灯,这里就不再赘述了,不过采用这种轮询的方式检测,会有一些小问题,后续进行改进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1928884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《昇思25天学习打卡营第15天|计算机视觉-SSD目标检测》

FCN图像语义分割&ResNet50迁移学习&ResNet50图像分类&ShuffleNet图像分类&SSD目标检测 SSD目标检测 模型简介 SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测…

重塑水利未来:智慧水利解决方案的探索与实践,从物联网、大数据到人工智能,科技如何赋能水利行业,实现智慧化管理与决策

本文关键词:智慧水利、智慧水利工程、智慧水利发展前景、智慧水利技术、智慧水利信息化系统、智慧水利解决方案、数字水利和智慧水利、数字水利工程、数字水利建设、数字水利概念、人水和协、智慧水库、智慧水库管理平台、智慧水库建设方案、智慧水库解决方案、智慧…

达梦数据库的系统视图v$systeminfo

达梦数据库的系统视图v$systeminfo 在达梦数据库(DM Database)中,V$SYSTEMINFO 是一个系统视图,用于显示数据库实例的系统信息。这个视图提供了关于数据库实例的运行状态、配置参数、资源使用情况等重要信息,对于数据…

linux端口,进程管理,主机状态监控

linux端口,进程管理,主机状态监控 一、端口 1、什么是端口?2、端口的划分2、查看端口占用 二、进程 1、什么是进程2、查看进程信息2、关闭进程 三、主机状态监控 1、查看资源占用2、磁盘信息监控3、查看网络情况 四、命令总结 一、端口 1、什么是端口…

【089】基于SpringBoot+Vue+小程序实现的在线点餐小程序

系统介绍 基于SpringBootVue小程序实现的在线点餐小程序 基于SpringBootVue小程序实现的在线点餐小程序采用前后端分离的架构方式,系统分为管理员、员工、用户三种角色,实现了用户点餐、订单生成、模拟支付、菜单管理、账号管理、角色管理、分类管理、菜…

什么是边缘计算技术和边缘计算平台?

随着物联网、5G技术和人工智能的不断发展,数据的规模和种类也在快速增加。在这种背景下,传统的云计算模式面临着一些问题,例如延迟高、网络拥塞等,这些问题限制了数据的处理速度和效率,降低了用户的使用体验。为了解决…

GraphRAG→必然桥梁or过渡折中?

GraphRAG→是未来符号与连接主义的必然桥梁 or AGI深度推理的过渡折中? 随着微软前几天发布开源的GraphRAG,进而又带动了领域GenAI的热潮,借着这股热潮,结合之前自己对LLM复杂推理的思考说一下自己关于LLM与泛RAG的理解延展&#…

DDei在线设计器-数据格式说明

数据格式说明 DDei的所有设计数据都以文件为单位保存在一个JSON对象中。JSON对象包含了全量的页签、舞台、图层、控件的位置以及属性信息。开发人员可以存储这个JSON到服务端数据库中,从而轻易的实现保存功能;也解析这个JSON,将其转换成自己业…

莆田外贸建站公司推荐的商会wordpress主题

垂钓用品wordpress外贸模板 钓鱼佬们用的东西鱼饵、鱼竿、支架、钓箱、渔线轮、鱼竿等垂钓用品wordpress外贸模板。 https://www.jianzhanpress.com/?p3973 户外灯具wordpress外贸站模板 米泡、路灯、地脚地砖灯、草坪灯、太阳能灯、投光灯户外灯具wordpress外贸站模板。 …

GNSS技术干货(34):天灵灵 地灵灵 不如C/N0灵

在GPS接收机研发测试过程中,作为硬件射频工程师最关心的测试项目是传导载噪比C/N0(carrier-to-noise ratio)值,因为它是非常重要的参数指标,可以评估接收机端收到的卫星信号强度,反映硬件射频链路的质量&am…

C语言中的指针:掌握内存的钥匙

C语言中的指针:掌握内存的钥匙 引言 C语言是一种结构化编程语言,它提供了对硬件底层的直接访问,其中最强大的特性之一就是指针。指针允许程序员直接操作内存地址,这对于理解程序的内部工作原理以及优化代码性能至关重要。本文将深…

python如何判断变量是否可迭代

python如何判断变量是否可迭代?方法如下: 方法一: 适用于python2和python3 >>> from collections import Iterable >>> isinstance("str", Iterable) True 方法二: 适用于python3 s "hello …

『 Linux 』命名管道

文章目录 命名管道与匿名管道命名管道特点命名管道的理解命名管道实现两个毫无关联的进程间通信 命名管道与匿名管道 命名管道是管道的一种,数据流向为单向故被称为管道; 与匿名管道相同属于一种内存级文件; 区别如下: 名字 匿名管道 没有名字,只存在于内存当中(类似内核缓冲…

【Visual Studio】Visual Studio使用技巧及报错解决合集

目录 目录 一.概述 二.Visual Studio报错问题及解决方法 三.Visual Studio操作过程中遇到的问题及解决方法 四.Visual Studio编译优化选项 五.Visual Studio快捷键 一.概述 持续更新Visual Studio报错及解决方法,包括Visual Studio报错问题及解决方法、Visua…

mac电脑pdf合并,macpdf合并成一个pdf

在数字化办公和学习的今天,pdf文件因其跨平台兼容性强、格式稳定而成为了最受欢迎的文档格式之一。但随之而来的问题也接踵而至,如何将多个pdf文件合并为一个?这不仅关系到文档的整洁性,更是时间管理的重要环节。今天,…

STM32+TMC2209控制步进电机正反转。

STM32F103ZET6TMC2209控制步进电机正反转 1. 步进电机介绍2 驱动器TMC2209介绍2.1 引脚图及其功能2.2 细分介绍2.3 TMC控制驱动器接法 3 控制器介绍3.1 确定控制引脚3.2 UBEMX配置3.2.1 GPIO配置3.2.2 NVIC配置3.2.3 RCC配置3.2.4 SYS配置3.2.5 USRAT2配置(PS:没用上…

【JS红宝书学习笔记】第25章 客户端存储

第25章 客户端存储 Cookie HTTP是无状态的,也就是说,你这次访问服务器,关闭后再次访问服务器,服务器是意识不到又是你来访问的。 登录时,浏览器需要帮我们在每一次请求里加入用户名和密码,这样才能做到保…

(WRF-UCM)高精度城市化气象动力模拟

气候变化及应对是政府、科学界及商业界关注的焦点。气候是多个领域(生态、水资源、风资源及碳中和等问题)的主要驱动因素,合理认知气候变化有利于解释生态环境变化机理及过程,而了解现在、未来气候变化则是进行生态、环境及能源评…

Win11鼠标卡顿 - 解决方案

问题 使用Win11系统使,鼠标点击任务栏的控制中心(如下图)时,鼠标会有3秒左右的卡顿,同时整个显示屏幕也有一定程度的卡顿。 问题原因 排除鼠标问题:更换过不同类型的鼠标,以及不同的连接方式…

【计算机毕业设计】学生心理咨询评估系统设计与实现【源码+lw+部署文档】

包含论文源码的压缩包较大,请私信或者加我的绿色小软件获取 免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…