常州市城乡建设局网站,wordpress 阿里云cdn,app制作教程视频,vs做网站开发吗本文以 ESP32-S3-Zero 板载的按键为例#xff0c;介绍了GPIO的使用方法#xff0c;以及如何获取按键的点击事件。板载按钮作为自带的天然用户按钮#xff0c;除了其本身的功能外#xff0c;也可以作为某些应用场景下的简单的交互方式。 1. 引言
对于一般的产品来说#x… 本文以 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开发板的板载按键进行交互。如果你有任何问题或者想法欢迎在评论区留言。
最后期待看到你使用这些知识创造出更多有趣的项目和产品。祝编程愉快