使用.Net nanoFramework获取ESP32板载按键的点击事件

本文以 ESP32-S3-Zero 板载的按键为例,介绍了GPIO的使用方法,以及如何获取按键的点击事件。板载按钮作为自带的天然用户按钮,除了其本身的功能外,也可以作为某些应用场景下的简单的交互方式。

1. 引言

对于一般的产品来说,比如路由器等,都提供了 RESET 功能,我们通过板载的按键就可以轻松的实现,并获取到按钮按下的时间。我们也可以使用其作为配网按钮,当用户按下按钮时,设备进入配网模式,这样,就可以方便的实现设备的配网功能。

在这篇文章中,我们主要使用其进行一些简单的交互:按下 BOOT 按钮,点亮板载的 LED 灯,松开灯灭。

2. 板载按键

ESP32-S3-Zero 板载了两个按键,不同于一般的载板只有一个按键,同时用于复位或者进入下载模式。这就意味着,我们可以在自己的程序中使用一个按钮,方便用户进行交互。如下图所示,板载的两个按键,分别是标号6的 BOOT 和 标号7的 RESET 按键。

请添加图片描述

根据原理图,我们可以看到,这两个按键都是通过一个电阻分压电路,将按键的电平变化转换为电压信号,然后通过一个 IO 口输入到 ESP32-S3 芯片中。如下图所示,已经标出了 BOOT 按键 K2 的电压信号输入到了 IO0 引脚。当按键按下时,IO0 引脚与 GND 短接,电压为 0V,当按键松开时,IO0 引脚与 3.3V 之间有一个 10K 的电阻,电压为 3.3V。也就是说,当用户按下 BOOT 按钮时,IO0 引脚的电平会变为低电平,当用户松开时,IO0 引脚的电平会变为高电平。

请添加图片描述

知道了原理,我们就可以通过程序来获取按键的点击事件了。不过,虽然有两个按键,但是我们只能使用一个,因为另一个按键是用于复位的,当按下 RESET 按钮时,ESP32-S3 芯片会复位,这样,我们就无法获取到按键的点击事件了。

3. 获取按键的点击事件

在 nanoFramework 中,我们可以通过 GpioController 类来获取 IO 口的状态,也就是获取 IO 口的电平。我们可以通过 ValueChanged 事件来获取 IO 口电平的变化,从而获取到按键的点击事件。

在下面的代码中,我们 Ws2812c 类来控制板载的 LED 灯,ESP32-S3-Zero 的板载 LED 引脚为21,只有1个灯珠。我们通过 Image 属性来获取到灯珠的图像,然后通过 SetPixel 方法来设置灯珠的颜色,最后通过 Update 方法来更新灯珠的状态:

public static void Main()
{// 1 个灯珠,1像素int WS2812_Count = 1;//  ESP32-S3-Zero 灯珠的引脚int WS2812_Pin = 21;var gpioController = new GpioController();var leddev = new Ws2812c(WS2812_Pin, WS2812_Count);BitmapImage img = leddev.Image;var userbtn = gpioController.OpenPin(0,PinMode.InputPullDown);userbtn.ValueChanged += (s, e) =>{Debug.WriteLine("BOOT 按钮事件:" + e.ChangeType.ToString());Debug.WriteLine("IO0 的值:" + userbtn.Read());if (userbtn.Read() == PinValue.Low){// 开灯img.SetPixel(0, 0, Color.White);}else{// 关灯img.SetPixel(0, 0, Color.Black);}leddev.Update();};Thread.Sleep(Timeout.Infinite);
}

如下图所示,我们可以看到,当按下 BOOT 按钮时,IO0 引脚的电平变为低电平,当松开时,电平变为高电平。在代码中我们根据当前的电平来设置灯珠的颜色,当按下按钮时,灯珠变为白色,当松开时,灯珠变为黑色,即灭灯。

请添加图片描述

通过上面的编码,我们很轻松的就制作了一个小电灯。当然,我们也可以通过修改代码,通过 flag 来控制灯珠的状态,这样,我们就可以实现按下按钮时,灯珠点亮,再次按下时,灯珠熄灭。

请添加图片描述

4. 最后

在这篇文章中,我们详细介绍了如何在.NET nanoFramework环境下,使用ESP32-S3-Zero开发板的板载按键进行简单的用户交互。我们了解了如何通过GPIO接口读取按键状态,并根据按键的状态控制板载LED的开关。这只是一个简单的示例,实际上,我们可以在这个基础上进行更多的扩展,比如,我们可以通过按键实现更复杂的功能,比如长按进入特定模式,或者双击执行特定操作等。

希望这篇文章能帮助你理解如何在.NET nanoFramework环境下,使用ESP32-S3-Zero开发板的板载按键进行交互。如果你有任何问题或者想法,欢迎在评论区留言。

最后,期待看到你使用这些知识创造出更多有趣的项目和产品。祝编程愉快!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32F103C8T6制作简易示波器

1设计需求 通过stm32f103c8t6实现一个简易示波器功能,该示波器可以检测0-3.6khz频率范围内的波形。 也可以输出波形,输出方波、三角波、正弦波。 2技术方案 通过stm32的ADC功能,采集输入信号,最后由oled屏进行显示。 采样频率…

了解nginx

1,概念 nginx是一个轻量级、高性能的HTTP和反向代理web服务器,同时也是一个通用代理服务器(TCP、UDP、IMAP、POP3、SMTP)。 2,优势 轻量级,占用内存少,启动极快采用事件驱动的异步非阻塞处理方…

2023量子科技十大人物(团队) | 光子盒年度系列

今年,是量子科学与技术的又一个丰收年,学术研究团体和科技公司纷纷庆祝在量子计算、量子通信和量子计量学以及基础量子科学方面取得的重大成就。面对如此多令人兴奋的进展,我们不能不为这些进展庆祝——而所有这些的一切,都离不开…

vue3项目中axios的常见用法和封装拦截(详细解释)

1、axios的简单介绍 Axios是一个基于Promise的HTTP客户端库,用于浏览器和Node.js环境中发送HTTP请求。它提供了一种简单、易用且功能丰富的方式来与后端服务器进行通信。能够发送常见的HTTP请求,并获得服务端返回的数据。 此外,Axios还提供…

【深度学习:Self-supervised learning (SSL) 】自我监督学习解释

【深度学习:SSL Self-supervised learning 】自我监督学习解释 什么是自我监督学习?比较自我监督学习与监督学习和无监督学习 为什么计算机视觉模型需要自监督学习?自我监督学习的好处自监督学习的局限性 自我监督学习如何运作?对…

Postman 并发测试入门指南:如何模拟用户并发请求?

背景介绍 最近,我们发起了一个在线图书管理系统的项目。我负责的一个关键模块包括三个主要后台接口: 实现对books数据的检索。实施对likes数据的获取。通过collections端点访问数据。 应对高流量的挑战 在设计并部署接口时,我们不可避免地…

c语言-函数指针

目录 前言一、函数指针1.1 函数指针定义1.2 函数指针调用函数1.3 函数指针代码分析 总结 前言 本篇文章介绍c语言中的函数指针以及函数指针的应用。 一、函数指针 函数指针:指向函数的指针。 函数在编译时分配地址。 &函数名 和 函数名代表的意义相同&#xf…

VM与欧姆龙PLC通讯设置

1、欧姆龙PLC 进行网口通讯,协议用的Fins tcp,也可以用Fins UDP。 2、主要步骤如下; step1:设置IP地址、端口号默认是9600,根据需要设置寄存器首地址和寄存器数量 step2:鼠标移动到某个地址下&#xff0c…

【c语言】指针小结

一、指针是什么? 可以通过运算符&来取得变量实际保存的 起始地址 。 (这个地址是虚拟地址,并不是真正物理内存上的地址。) 数据类型 *标识符 &变量; int *pa &a; int *pa NULL; (NULL表示地址为0的内存空间&a…

十年磨一剑

随着不停的优化和改进,JRT开发已经接近尾声,计划过年时候低调发布JRT1.0,框架目标:只做信创下的医疗龙头而不是信创下的苟活着。 十年前,我从南京踏上去沈阳的火车,去东北参加三方协议的启航计划&#xff…

激光焊接机:塑料产品制造中的革命性优势

随着科技的飞速发展,激光焊接机在塑料产品制造领域的应用越来越广泛。相较于传统的焊接技术,激光焊接机在塑料产品制造中展现出诸多优势,成为现代工业生产中不可或缺的一部分。 一、精确、高效的焊接性能 激光焊接机采用高能激光束作为焊接热…

如何通过HACS+Cpolar实现远程控制米家和HomeKit等智能家居设备

文章目录 基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssistant,通过内网穿透在户外控制家庭中枢。本文将介绍如何安装HACS插件商店,将米家,果家设备接入 Home Assistant。 基本条件…