当前位置:网站首页>C# NanoFramework 点灯和按键 之 ESP32
C# NanoFramework 点灯和按键 之 ESP32
2022-07-06 09:36:00 【dotNET跨平台】
本来周末是要搞个大的,WIFI 和 Web网页之类的,奈何搞了两天,并与外国友人聊过后,才发现是固件有问题,晚上与大佬进行交流后才发现,原来ESP32S的官方固件有问题,搞不了。
所以,建议买的话买ESP32,不带任何型号的就可以了。
我买的新板子已经在路上了,只能等板子来了才能后续了。
目前也能搞一些简单的,就先搞一下下。
嵌入式的基础知识
如果对单片机,嵌入式了解少的,还是有必要深入了解一下硬件的基础知识的。
可以参考 《零死角玩转STM32—F429挑战者.pdf 》来了解大多数相关知识,看看基础部分即可,当然多看点更好。
虽然,板子都不一样,但是,基础知识是差不多的,都是差不多的架构方式。
比如 STM32可以达到一百多个引脚,而ESP32可能只有40左右个引脚,除了内置WIFI已经占用的,大部分IO口都已经引了出来,可以自己对其进行硬件级的设计。
在开发板上,一般这样的引脚会单独引出来,供开发测试使用。
GPIO
啥是GPIO,英文: General-purpose input/output 中文就是 通用型之输入输出的简称,简单来说,就是CPU可以控制的引脚,通过CPU芯片的GPIO引脚与外部设备(传感器了,AD采集之类的设备)连接起来,从而实现与外部通讯、控制以及数据采集的功能。
GPIO 基本的输入和输出
基本的输入
最基本的输出,就是检测外部输入电平,比如,判断当前按键是否按下等。
基本的输出
最基本的输出就是控制芯片引脚输出高,低电平,实现开关控制,比如GPIO引脚接入到LED灯,那就可以控制LED灯的亮灭。接入到继电器或三极管,那就可以通过继电器或三极管控制外部大功率电路的开关或者说通断。
GPIO 图解
以上就是GPIO的原理图,当然,硬件可能会有升级,但是,大致原理是一样的。
深度的解释可以自己看看书上的介绍和网上的资料,这里我说说我的大概解释。
IO口本身上来讲就表现了两个意思,输入和输出。
所以,这个电路的作用就是尽量保证它的输入和输出稳定,安全,可靠。
当然,更安全的可靠的还是靠外部上拉等,它本身还是挺弱的,电压3.3V左右,电流估计更小,偏向于控制信号级。
所以,想获得外部的信息,还是输出信息到外部,可以通过图上大致了解到,图上也表现了这两条路,一个是输入,一个是输出。
C# 实现点灯和获取按钮项目
板子相关资料
我当前的板子是ESP32S,找了官方,终于找到了资料,地址如下:
https://docs.ai-thinker.com/esp32/boards/nodemcu_32s
大部分资料可以参考,可以下载
以下是它的功能引脚图
以下是它的全的电路图
我们要点灯,和按键,所以需要找到这两个功能的IO是哪些。
LED和Button的GPIO
从图可知 LED 的 GPIO 是 IO2 (GPIO 2 的意思,就是第二个IO引脚)
按键的话,一个是EN,就是板子的开关使能键,这个键,用不了,我们只能用另外一个,那就是IO0,第0个键。
代码相关
需要新增几个Nuget包
Install-Package nanoFramework.Hardware.Esp32 -Version 1.3.6.7
Install-Package nanoFramework.Runtime.Events -Version 1.10.0
Install-Package nanoFramework.System.Device.Gpio -Version 1.0.4
然后,增加点代码,逻辑很简单,按下Boot按键,把灯点亮,松开按键,把灯熄灭。
public class Program
{
public static GpioPin led;
public static GpioPin button;
public static void Main()
{
var gpioController = new GpioController();
button = gpioController.OpenPin(Gpio.IO00, PinMode.Input);
led = gpioController.OpenPin(Gpio.IO02, PinMode.Output);
button.ValueChanged += Button_ValueChanged;
while (true)
{
Thread.Sleep(1000);
}
}
private static void Button_ValueChanged(object sender, PinValueChangedEventArgs e)
{
Debug.WriteLine("按键事件 : " + e.ChangeType.ToString());
Debug.WriteLine("按键当前值: " + button.Read());
if (e.ChangeType != PinEventTypes.Rising)
{
//按下点亮灯
led.Write(PinValue.High);
}
else
{
//松开手把灯搞灭
led.Write(PinValue.Low);
}
}
}
运行的结果
可以明显看到,按下按键的时候, 当前值是 Low,松开后,是High。
上边是按下按键的小图。
我自己反复试了试,启动的话大概2秒就可以按键有效了。按键与灯的逻辑,反应也十分的快。
总结
整体来看,操作方便了很多,还可以调试,就是板子要与固件要保持一致,要不然,会有很多的小问题,需要去克服。
代码地址
https://github.com/kesshei/NanoFreamworkKeyOrButtonDemo.git
https://gitee.com/kesshei/NanoFreamworkKeyOrButtonDemo.git
阅
一键三连呦!,感谢大佬的支持,您的支持就是我的动力!
边栏推荐
- CentOS7上Redis安装
- 学习投资大师的智慧
- Wu Jun's trilogy experience (VII) the essence of Commerce
- 数据仓库建模使用的模型以及分层介绍
- The solution to the left-right sliding conflict caused by nesting Baidu MapView in the fragment of viewpager
- 03 products and promotion developed by individuals - plan service configurator v3.0
- 06 products and promotion developed by individuals - code statistical tools
- Akamai anti confusion
- MySQL Advanced (index, view, stored procedures, functions, Change password)
- Take you hand-in-hand to do intensive learning experiments -- knock the level in detail
猜你喜欢
Final review of information and network security (based on the key points given by the teacher)
信息与网络安全期末复习(基于老师给的重点)
06 products and promotion developed by individuals - code statistical tools
Flink analysis (I): basic concept analysis
Coursera cannot play video
Introduction to spring trick of ByteDance: senior students, senior students, senior students, and the author "brocade bag"
Flink 解析(四):恢复机制
Flink 解析(三):内存管理
The NTFS format converter (convert.exe) is missing from the current system
JVM class loading subsystem
随机推荐
Total / statistics function of MySQL
The NTFS format converter (convert.exe) is missing from the current system
mysql的列的数据类型详解
Redis quick start
07 personal R & D products and promotion - human resources information management system
自动化运维利器-Ansible-Playbook
vscode
Shawshank's sense of redemption
SQL调优小记
复盘网鼎杯Re-Signal Writeup
Coursera cannot play video
Final review of information and network security (full version)
Final review of information and network security (based on the key points given by the teacher)
04 products and promotion developed by individuals - data push tool
Brush questions during summer vacation, ouch ouch
Detailed explanation of data types of MySQL columns
vscode
网络分层概念及基本知识
Virtual machine startup prompt probing EDD (edd=off to disable) error
PostgreSQL 14.2, 13.6, 12.10, 11.15 and 10.20 releases