C# NanoFramework 点灯和按键 之 ESP32

本来周末是要搞个大的,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 图解

000ba00d2a449584f1a411efa8a42861.png

以上就是GPIO的原理图,当然,硬件可能会有升级,但是,大致原理是一样的。

深度的解释可以自己看看书上的介绍和网上的资料,这里我说说我的大概解释。

IO口本身上来讲就表现了两个意思,输入和输出。

所以,这个电路的作用就是尽量保证它的输入和输出稳定,安全,可靠。

当然,更安全的可靠的还是靠外部上拉等,它本身还是挺弱的,电压3.3V左右,电流估计更小,偏向于控制信号级。

所以,想获得外部的信息,还是输出信息到外部,可以通过图上大致了解到,图上也表现了这两条路,一个是输入,一个是输出。

C# 实现点灯和获取按钮项目

板子相关资料

我当前的板子是ESP32S,找了官方,终于找到了资料,地址如下:

https://docs.ai-thinker.com/esp32/boards/nodemcu_32s

大部分资料可以参考,可以下载

以下是它的功能引脚图

3347a0d348e3a0a880c11a5cd631f4f7.png

以下是它的全的电路图

886a0da1c4b132724f9ee25dadb00758.png

我们要点灯,和按键,所以需要找到这两个功能的IO是哪些。

LED和Button的GPIO

从图可知 LED 的 GPIO 是 IO2 (GPIO 2 的意思,就是第二个IO引脚)

611cdc2d31795a4ffcb189aa4a0bec92.png

按键的话,一个是EN,就是板子的开关使能键,这个键,用不了,我们只能用另外一个,那就是IO0,第0个键。

a63c3f6799ef9d31a2906f7337551626.png

代码相关

需要新增几个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);}}
}

运行的结果

6933b2dd80b85847aa86a31c602f8980.png

可以明显看到,按下按键的时候, 当前值是 Low,松开后,是High。

cabbb11694463b2081faa440359083e8.gif

上边是按下按键的小图。

我自己反复试了试,启动的话大概2秒就可以按键有效了。按键与灯的逻辑,反应也十分的快。

总结

整体来看,操作方便了很多,还可以调试,就是板子要与固件要保持一致,要不然,会有很多的小问题,需要去克服。

代码地址

https://github.com/kesshei/NanoFreamworkKeyOrButtonDemo.git

https://gitee.com/kesshei/NanoFreamworkKeyOrButtonDemo.git

一键三连呦!,感谢大佬的支持,您的支持就是我的动力!

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

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

相关文章

【ArcGIS Pro微课1000例】0002:ArcGIS Pro 2.5二三维联动显示

ArcGIS Pro是一款全新的桌面应用程序,它改变了桌面GIS的工作方式,以满足新一代WebGIS应用模式。ArcGIS Pro采用Ribbon界面风格,给人全新的用户体验。它作为一个高级的应用程序,可以对来自本地、ArcGIS Online、或者Portal for ArcGIS的数据进行可视化、编辑、分析。同时,实…

C语言试题147之创建一个链表并且排序输出这个链表

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:创建一个链表并且排序输出这…

PHP中刷新输出缓冲

2019独角兽企业重金招聘Python工程师标准>>> http://www.cnblogs.com/mutuan/archive/2012/03/18/2404957.html 转载于:https://my.oschina.net/wuzhencan/blog/652259

C语言试题145之创建一个链表

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:创建一个链表 2 、温馨提示 …

[转]IntelliJ IDEA 2019.3正式发布,给我们带来哪些新特性?

每篇一句 工欲善其事必先利其器 ——《论语卫灵公》 前言 千呼万唤始出来。自从JetBrains在今年7月24日发布了IDEA 2019.2版本后,从9月份开始我便一直在关注此版本正式版的发布。JetBrains公司在9月中旬就对外公布了下一个主要版本 2019.3的Roadmap,而且…

FineReport中以jws方式调用WebService数据源方案

在使用WebService作为项目的数据源时,希望报表中也是直接调用这个WebService数据源,而不是定义数据连接调用对应的数据库表,这样要怎么实现呢? 在程序中访问WebService应用服务,将WebService返回的数据转为程序数据集&…

C语言试题148之海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:海滩上有一堆桃子,五只猴子…

一文读懂什么是CTO、技术VP、技术总监、首席架构师

究竟什么是CTO,一个公司真的需要CTO么?哪些公司的职位对于技术管理者来讲真的是CTO的职位?同样是技术最高负责人,为什么有人叫CTO、有人叫技术总监、技术VP,有人叫首席架构师?他们之间的差别是什么&#xf…

与MySQL传统复制相比,GTID有哪些独特的复制姿势?

与MySQL传统复制相比,GTID有哪些独特的复制姿势? http://mp.weixin.qq.com/s/IF1Pld-wGW0q2NiBjMXwfg 陈华军,苏宁云商IT总部资深技术经理,从事数据库服务相关的开发和维护工作,之前曾长期从事富士通关系数据库的开发&#xff0c…

【ArcGIS Pro微课1000例】0007:ArcGIS Pro 2.5质量检查:拓扑创建与编辑案例教程

文章目录 1. 加载矢量数据2. 创建数据库、要素数据集3. 拓扑创建4. 拓扑错误编辑与修改1. 加载矢量数据 矢量数据可以是单独shp格式的文件数据,也可是存在于数据库中的要素类。 2. 创建数据库、要素数据集 创建数据库 无论是在ArcMap,还是ArcGIS Pro中,创建拓扑都需要在…

C语言试题149之809乘以??=800乘以??+9乘以??+1 其中??代表的两位数,8乘以??的结果为两位数,9乘以??的结果为 3 位数。求??代表 的两位数,及 809乘以??后的结果

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:809*??=800*??+9*??+1…

.Net之时间轮算法(终极版)定时任务

TimeWheelDemo一个基于时间轮原理的定时任务对时间轮的理解其实我是有一篇文章(.Net 之时间轮算法(终极版)[1])针对时间轮的理论理解的,但是,我想,为啥我看完时间轮原理后,会采用这样的方式去实现。可能只是一些小技巧不上大雅之堂…

phpstorm config include paths for swoole

配置phpstorm 当你写swoole 类或者函数时会自动补全 https://github.com/swoole/ide-helper.git 克隆下这个工具包 点加,然后指定你下载好的工具包路径,点ok 本文转自 skinglzw 51CTO博客,原文链接:http://blog.51cto.com/sking…

C语言试题150之八进制转换为十进制

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:八进制转换为十进制 2 、温馨…

【ArcGIS风暴】ArcGIS创建栅格数据集色彩映射表案例--以GlobeLand30土地覆盖数据为例

矢量数据快速符号化,可以将常用的样式保存到样式符号库,栅格数据快速符号化,需要创建色彩映射表。本文以GlobeLand30土地覆盖数据为例,详解ArcGIS中创建与使用色彩映射表。 文章目录一、 ArcGIS色彩映射表介绍二、土地覆盖数据色彩…

Visual Studio 2019 16.3.10 初体验

Visual Studio 2019 版本 16.3.10 发布时间:2019 年 11 月 20 日 官网地址:https://visualstudio.microsoft.com/zh-hans/vs/ 介绍: https://devblogs.microsoft.com/visualstudio/dot-net-core-support-in-visual-studio-2019-version-16…

【ArcGIS风暴】GlobeLand30全球数据处理教程(批量投影转换、无效值处理、拼接)

本文讲述GlobeLand30全球数据批处理流程,主要步骤包括:批量分幅投影转换、批量分幅无效值处理、批量图幅拼接和成品展示。由于图幅数目和数据量较大,本文是采用Python代码批量实现的,有关Python的基本操作及处理案例,可…

Docker 私有仓库的搭建

Docker在2015年推出了distribution项目,即Docker Registry 2。相比于old registry,Registry 2使用Go实现,在安全性、性能方面均有大幅改进。Registry设计了全新的Rest API,并且在image存储格式等方面不再兼容于old Registry。去年…

请查收.NET MAUI 的最新学习资源

点击上方蓝字关注我们(本文阅读时间:3分钟)2022 年 5 月 23 日,.NET MAUI 正式发布。.NET MAUI 为您提供了一流的跨平台 UI 堆栈,面向 Android、iOS、macOS 和 Windows。我们很高兴地宣布,有几种不同的学习 .NET MAUI …

C语言试题151之求 0到7 所能组成的奇数个数。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:求 0—7 所能组成的奇数个数…