2 GPIO控制

ESP32的GPIO的模式,一共有输入和输出模式两类。其中输入模式:上拉输入、下拉输入、浮空输入、模拟输入;输出模式:输出模式、开漏输出(跟stm32八种输入输出模式有所不同)。库函数中控制引脚的函数如下:

1 设置数字引脚
函数原型void pinMode(uint8_t pin, uint8_t mode)
函数功能设置指定数字引脚的工作模式
返回值
参数说明pin:数字引脚编号。列如 GPIO3 : 3 mode:数字引脚的工作模式:常见有 OUTPUT 输出模式 INPUT_PULLUP 带上拉的输入模式
设计参考//将GIPO14引脚设置为输入模式 pinMode(14,OUTPUT);
2 写数字引脚
函数原型void digitalWrite(uint8_t pin, uint8_t value)
函数功能向指定的引脚输出高电平或者低电平,在写引脚之前,该引脚要设置为OUTPUT模式
返回值
参数说明pin:数字引脚编号。列如 GPIO3 : 3 mode:数字引脚的输出值: HIGH 高电平 LOW 低电平
设计参考//将GIPO14输出高电平 pinMode(14,OUTPUT); digitalWrite(14,HIGH);
3 读数字引脚
函数原型int digitalRead(uint8_t pin)
函数功能向指定的引脚的状态,在写引脚之前,该引脚要设置为INPUT模式
返回值引脚读取结果,高电平1 低电平 0
参数说明pin:数字引脚编号。 列如 GPIO3 : 3
设计参考//读取GIPO14输出电平 pinMode(14,INPUT_PULLUP); digitalRead(14)

还有两个常用的延时函数

4 毫秒级别延时函数
函数原型void delay(uint32_t ms)
函数功能毫秒级别的延时函数
返回值
参数说明ms 延时长度,单位:毫秒
设计参考//延时500ms delay(500);
5 微秒级别延时函数
函数原型void delayMicroseconds(uint32_t us)
函数功能微秒级别的延时函数
返回值
参数说明us 延时长度,单位:微秒
设计参考//延时500us delayMicroseconds(500);
4 项目

利用GPIO的输出模式,输出高、低电平,就可以实现灯光闪烁的效果,但是人眼捕捉不到这个频率的开关,所以要加上一定延时,查看ESP32-wroom原理图板载的一个蓝色LED为GPIO2。再利用按键控制LED进行闪烁一次,其按键引脚为GPIO0。

代码如下

#include <Arduino.h>/* LED进行闪烁 */
#define LED0 2
#define Key1 0
void LEDBlink(){//LED进行关闭和打开的操作,实现闪灯的效果digitalWrite(LED0,HIGH);delay(500);digitalWrite(LED0,LOW);delay(500);delayMicroseconds
}void setup() {//设置led的工作模式pinMode(LED0,OUTPUT);//设置按键引脚模式pinMode(Key1,INPUT_PULLUP);}bool GetKeyValue(){if (digitalRead(Key1)){return false;}else{return true;}
}void loop() {// put your main code here, to run repeatedly:if (GetKeyValue()){LEDBlink();}
}

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

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

相关文章

如何将Hyper-V转VMware?反之亦可

为何要在Hyper-V和VMware之间进行转换呢&#xff1f; 尽管VMware和Microsoft Hyper-V都是当前流行的一类虚拟机监控程序&#xff0c;但它们并不相互兼容。VMware产品使用VMDK格式创建虚拟磁盘&#xff0c;而Hyper-V则使用VHD或VHDX格式创建虚拟磁盘。 有时您可能需要进行这种转…

解读丰田生产方式的工作原理

丰田生产方式&#xff0c;被誉为现代制造业的瑰宝&#xff0c;以其独特的精益生产理念&#xff0c;引领了全球制造业的变革。本文将从丰田生产方式的核心理念、两大支柱、应用实践以及面临的挑战等方面&#xff0c;全面解读其工作原理。 丰田生产方式&#xff0c;又称精益生产&…

弱监督语义分割-对CAM的生成过程进行改进1

一、仿射变换图像结合正则项优化CAM生成 论文&#xff1a;Self-supervised Equivariant Attention Mechanism for Weakly Supervised Semantic Segmentation &#xff08;CVPR,2020&#xff09; 1.SEAM方法 孪生网络架构&#xff08;Siamese Network Architecture&#xff09…

圆柱齿轮的旋向如何判断?

上期出了个题&#xff0c;给了两个内齿轮&#xff0c;请大家来判断他们的旋向&#xff0c;看到了有不少小伙伴评论给出了自己的答案&#xff0c;正确和错误差不多各半吧&#xff0c;错的占比要大一些。这期咱们就好好聊一聊这个问题。 外齿轮的旋向大家貌似判断都没什么问题&a…

数据的均匀化分割算法(网格划分法、四叉树法(含C++代码))

数据的均匀化分割主要是指在分割过程中尽可能均匀地将数据点分布在各个子区域中&#xff0c;以保持数据分布的平衡和优化数据结构的性能。以下是几种可以实现数据均匀化分割的方法&#xff1a; 一. 网格划分法 1. 基本概念 虽然传统的网格划分法不是动态调整的&#xff0c;但通…

Android AOSP Ubuntu源码编译电脑卡顿问题定位解决

文章目录 问题概述分析问题解决问题查看交换分区创建交换分区删除交换分区调整交换分区的活跃度 问题概述 开发SystemUI时&#xff0c;使用内存为16G的主机&#xff0c;Ubuntu 20.04的系统编译SystemUI的源码&#xff0c;编译的过程中发现电脑卡顿&#xff0c;鼠标不能移动。必…

vue2 八大组件通信,父子通信,跨层级通信,事件总线,vuex等

文章目录 什么是组件通信&#xff1f;父子通信流程propsProps 定义Props 作用特点数组写法对象写法&#xff08;props校验&#xff09;简写只验证数据类型&#xff1a;完整写法&#xff0c;完整的验证&#xff1a; props父向子传值用props父传子在子组件中修改props $emit子向父…

scrapy的入门

今天我们先学习一下scrapy的入门,Scrapy是一个快速的高层次的网页爬取和网页抓取框架&#xff0c;用于爬取网站并从页面中提取结构化的数据。 1. scrapy的概念和流程 1.1 scrapy的概念 我们先来了解一下scrapy的概念,什么是scrapy: Scrapy是一个Python编写的开源网络爬虫框架…

【VTKExamples::Rendering】第四期 相机插值(CameraInterpolate)

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例CameraInterpolate,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. CameraInterpol…

开源基金会AtomGit教程

大家伙&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 注册 点击链接进入官网&#xff0c;先注册&#xff0c;然后登录&#xff1a;https://atomgit.com/ 编辑个人资料&#xff0c;修改一下自己的信息&#xff0c;用户名后面提交代码的时候要…

程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号等的介绍

文章目录 前言一、程序的翻译环境和执行环境二、编译链接过程三、编译的几个阶段四、运行环境五、预定义符号总结 前言 程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号的介绍。 一、程序的翻译环境和执行环境 在 ANSI C 的任何一种实现中&#xff0c…

Flutter-加载中动画

效果 考察内容 AnimationControllerTweenAnimatedBuilderTransformMatrix4 实现 ///源码&#xff1a;https://github.com/yixiaolunhui/flutter_xy class LoadingView extends StatefulWidget {const LoadingView({Key? key}) : super(key: key);overrideState<LoadingV…