【史上最全面esp32教程】点灯大师篇
文章目录
- 前言
- ESP32简介
- 认识arduino的两个函数
- 点灯
- 步骤
- 函数介绍
- LED灯闪烁
- 流水灯
- 总结
前言
esp32有很多的功能,例如wifi,蓝牙等,这节我们学习最简单的点灯。
提示:以下是本篇文章正文内容,下面案例可供参考
ESP32简介
ESP32模块是ESP8266的升级版本。除了Wi-Fi模块,该模块还包含蓝牙4.0模块。双核CPU工作频率为80至240 MHz,包含两个Wi-Fi和蓝牙模块以及各种输入和输出引脚, ESP32是物联网项目的理想选择。
虽然ESP32的引脚数比常用的处理器少,但在引脚上复用多个功能时不会遇到任何问题。
警告:ESP32引脚的电压电平为3.3伏。如果要将ESP32连接到其他工作电压为5伏的设备,则应使用电平转换器转换电压电平。
认识arduino的两个函数
我们创建了一个arduino项目后,他会自动生成下面的两个函数:
void setup() {// put your setup code here, to run once:}void loop() {// put your main code here, to run repeatedly:}
setup()是整个程序只在开始时调用,用于初始化作用。
loop()可以类比while(1)。他会一直调用
变成C语言就会是这样。(注意:不能把下面的代码弄到arduino里面):
void setup()
{}void loop()
{}int main()
{setup();while(1){loop();}}
点灯
步骤
- 将LED的正极接到ESP32开发板的GPIO口,负极接到GND口。
- 使用ESP32的Arduino IDE编写代码,将GPIO口设置为输出模式,并将其设置为高电平,以便点亮LED。
- 上传代码到ESP32开发板,LED就会点亮。
函数介绍
在esp32中,我们需要通过杜邦线来连接灯与我们的引脚。
在这里我的D1灯的引脚为2.
使用pinMode函数来指定我们引脚的模式
pinMode(pin,value);
value为模式。
在点灯中,我们使用OUTPUT模式,表示输出模式。
使用digitalWrite函数对指定的引脚进行写入高低电平.
digitalWrite(pin,LOW/HIGH);
delay()延时函数:delay(ms)
LED灯闪烁
#define LED1 2void setup() {// put your setup code here, to run once:pinMode(LED1,OUTPUT);
}void loop() {// put your main code here, to run repeatedly:digitalWrite(LED1,HIGH);delay(200);digitalWrite(LED1,LOW);delay(200);
}
现在D0就200毫秒闪烁一次了。
#define 的原因:使名称引脚更清晰,当然,你不写#define也可以,直接写引脚名到LED1这里。
流水灯
流水灯相等于我们编程语言的hello world。
所以,在这,我写一下代码:
学过51单片机的同学都知道,流水灯可以:P1 = ~(1 << i)去实现,但是esp32就不行了,因为他要连线
并且线的位置不同,不连续,所以只能用老办法了。
Pin脚在#define中
#define LED1 2
#define LED2 21
#define LED3 4
#define LED4 5
#define LED5 22
#define LED6 25
#define LED7 26
#define LED8 18void setup() {// put your setup code here, to run once:pinMode(LED1,OUTPUT);pinMode(LED2,OUTPUT);pinMode(LED3,OUTPUT);pinMode(LED4,OUTPUT);pinMode(LED5,OUTPUT);pinMode(LED6,OUTPUT);pinMode(LED7,OUTPUT);pinMode(LED8,OUTPUT);
}void loop() {// put your main code here, to run repeatedly:digitalWrite(LED1,HIGH);delay(200);digitalWrite(LED1,LOW);delay(200);digitalWrite(LED2,HIGH);delay(200);digitalWrite(LED2,LOW);delay(200);digitalWrite(LED3,HIGH);delay(200);digitalWrite(LED3,LOW);delay(200);digitalWrite(LED4,HIGH);delay(200);digitalWrite(LED4,LOW);delay(200);digitalWrite(LED5,HIGH);delay(200);digitalWrite(LED5,LOW);delay(200);digitalWrite(LED6,HIGH);delay(200);digitalWrite(LED6,LOW);delay(200);digitalWrite(LED7,HIGH);delay(200);digitalWrite(LED7,LOW);delay(200);digitalWrite(LED8,HIGH);delay(200);digitalWrite(LED8,LOW);delay(200);
}
现在D1~D8就开始逐个闪烁了。
总结
恭喜你,完成了点灯大师的挑战,希望你在下一次的蜂鸣器的挑战中也能像这次一样。(达成成就:点灯)
相关文章:
【史上最全面esp32教程】点灯大师篇
文章目录前言ESP32简介认识arduino的两个函数点灯步骤函数介绍LED灯闪烁流水灯总结前言 esp32有很多的功能,例如wifi,蓝牙等,这节我们学习最简单的点灯。 提示:以下是本篇文章正文内容,下面案例可供参考 ESP32简介 …...
【Java 面试合集】内存中为什么要区分栈和堆
内存中为什么要区分栈和堆 1. 概述 嗨,大家好Java 面试合集又来了,今天我们分享的主题很大众化以及普通。无论是Java 语言本身还是别的语言都会有所涉及,但是今天我们从Java角度来讲下 2. 分析 今天我们会从多个方向来分享这个话题 2.1 栈是…...
【NLP实战】Python字符串处理
一、Python字符串基本操作 1. 去掉前后的特殊字符(strip) Python的strip操作可以去除字符串前后的空格(不改变原串)下例将前后的空格均删掉👇 str 人工智能 str.strip() # OUT:人工智能rstrip删除右边的空格&a…...
17.CSS伪类
举一个简单的例子来说明什么是伪类? 从之前的代码中,如下图,我们像给这两个列表中的某一列单独设置样式,我们该如何做呢? 我们肯定会选择在li标签上添加class去实现,如下 开始标记结束标记实际元素 <…...
数据链路层
一.以太网数据链路层考虑的是相邻两个节点(通过网线/光纤、无线直接相连的两个设备)之间的传输,这里的典型协议中最知名的就是“以太网”这个协议了数据链路层,也规定了物理层的内容以太网帧格式:IP地址用来描述整个传…...
投票需要什么流程微信投票互助平台的免费投票平台搭建
“最美家政人”网络评选投票_免费小程序投票推广_小程序投票平台好处手机互联网给所有人都带来不同程度的便利,而微信已经成为国民的系统级别的应用。现在很多人都会在微信群或朋友圈里转发投票,对于运营及推广来说找一个合适的投票小程序能够提高工作效…...
数据结构——算法的时间复杂度
🌇个人主页:_麦麦_ 📚今日名言:生命中曾经有过的所有灿烂,都终究需要用寂寞来偿还。——《百年孤独》 目录 一、前言 二、正文 1.算法效率 1.1如何衡量一个算法的好坏 1.2算法的复杂度 2. 时间复杂度 2.1时间复杂度的…...
Go基础-类型
文章目录1 bool2 有符号整数3 无符号整数4 浮点数5 复数6 string7 关于类型转型1 bool bool类型有两个值,一个是true,一个是false。 测试 package mainimport "fmt"func main() {a : trueb : falsec : a && bd : a || bfmt.Println(a…...
良许翻天覆地的2022年
大家好,我是良许,新年快乐呀~ 在我女室友坚持不懈的努力之下,2022年的最后一天我终于被她传染了,阳了~ 此时的我,正顶着37多度的低烧写下这篇年终总结。 2022年,对于大多数人而言,封控是主旋…...
node+vue微信小程序的社区后勤报修系统
社区后勤报修系统小程序进行总体设计和详细设计。总体设计主要包括小程序功能设计、小程序总体结构设计、小程序数据结构设计和小程序安全设计等:详细设计主要包括社区后勤报修系统小程序数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对社区后…...
WSL(Windows Subsystem for Linux)
一、WSL优势 •传统方式:获取Linux操作系统环境,必须安装完整的虚拟机,如VMware•WSL:以非常轻量化的方式,得到Linux系统环境总结:WSL更方便,简单、好用、轻量化、省内存 二、什么是WSL ①不…...
华为OD机试题 - 单词反转(JavaScript)
最近更新的博客 华为OD机试题 - 任务总执行时长(JavaScript) 华为OD机试题 - 开放日活动(JavaScript) 华为OD机试 - 最近的点 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试题 - 最小步骤数(JavaScript) 华为OD机试题 - 任务混部(JavaScript) 华为OD机试题 - N 进…...
人工智能原理复习 | 产生式系统的搜索策略
文章目录 一、回溯策略二、图搜索策略三、A 算法与 A* 算法CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 主要内容:回溯策略、图搜索策略(无信息的图搜索、启发式的图搜索)、A 算法与 A* 算法 一、回溯策略 回溯算法(BackTracking Algorithm) 实际上是一个类似枚举的搜…...
初始C语言 - 数组(一维数组、二维数组、数组越界、数组传参)
目录 一、一维数组的创建和初始化 1、数组的创建 2、 数组的初始化 3.一维数组的使用 数组通过下标来访问 总结: 1. 数组是使用下标来访问的,下标是从0开始。 2. 数组的大小可以通过计算得到。 4、一维数组在内存中的存储 二、 二维数组的创建和初始化 1.二…...
人工智能原理复习 | 可分解产生式系统的搜索策略
文章目录 一、前言二、基础知识三、AO* 算法四、博弈树搜索五、总结CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 主要内容: 与 / {/} /或图搜索、AO* 算法、极大极小过程、...
线段树(维护区间信息)
一,定义: 可以在logN时间内实现区间修改,单点修改,区间查询等操作的工具 二,思路(修改无乘法时): 1,建树 通过把区间不断二分建立一颗二叉树 我们以维护一个数组a{1…...
C语言 基于Ncurse库的贪吃蛇游戏项目
为了敲键盘及时响应,需要用到ncurse 测试代码: ncurse1.c /* ncurse1.c */ #include <curses.h> //ncurse的头文件。int main() {char c;int i 0;//ncurse界面的初始化函数。initscr(); for(i0;i<2;i){c getch();printw("\n");//…...
【Java基础】Java语言特性
认识Java java语言的执行过程 编写纯文本文件 .java 经过javac编译器(java complier)编译 .class .class是二进制的字节码 在源文件中定义几个类,就会生成几个 由JVM运行 .class JVM把字节码编译成可以在处理器上运行的高性能的本地代码(native code),…...
python进阶--Numyp库(一)
一、Numpy库介绍 NumPy(Numerical Python)是Python的⼀种开源的数值计算扩展。提供多维数组对象,各种派⽣对象(如掩码数组和矩阵),这种⼯具可⽤来存储和处理⼤型矩阵,⽐Python⾃身的嵌套列表&am…...
CV学习笔记-Inception
CV学习笔记-Inception 目录 文章目录CV学习笔记-Inception目录1. 常见的卷积神经网络2. Inception(1) Inception提出背景(2) Inception module 核心思想3. Inception的历史版本(1) InceptionV1-GoogleNet(2) InceptionV2(3) InceptionV3(4) Inception V44. Inception模型的特点…...
冒险岛V128单机版服务端魔改指南:从基础搭建到自定义任务/装备修改
冒险岛V128单机版深度定制指南:从零构建个性化游戏世界 在数字娱乐的黄金时代,怀旧游戏焕发新生已成为一种文化现象。作为横版卷轴网游的经典之作,冒险岛凭借其独特的艺术风格和社交属性,至今仍拥有大量忠实玩家。而单机版的出现&…...
数据稠密计算的算法优化:从理论到实践
数据稠密计算的算法优化:从理论到实践 引言 作为一名在数据深渊里捞了十几年 Bug 的女码农,我见过太多因为算法选择不当导致的性能问题。在数据稠密计算中,算法的选择和优化是提升计算性能的关键因素之一。今天,我们来聊聊数据稠密…...
LuckyLilliaBot QQ群管理自动化实战指南:从零搭建高效智能管理方案
LuckyLilliaBot QQ群管理自动化实战指南:从零搭建高效智能管理方案 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot LuckyLilliaBot是一款基于NTQQ客户端与OneBot11协议的QQ机器人开发框…...
三步掌握BepInEx插件框架:零基础也能懂的Unity游戏扩展指南
三步掌握BepInEx插件框架:零基础也能懂的Unity游戏扩展指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx作为Unity/XNA游戏的插件框架,为开发者和…...
AI智能体工作完整源码大公开!企业级多Agent框架,一键私有化部署
温馨提示:文末有资源获取方式最近“龙虾AI”的热度席卷技术圈,大家都在讨论如何“养殖”自己的智能体。但真正落地时,技术门槛、Token消耗与复杂的协同问题,往往让普通用户和企业望而却步。今天我们不谈概念,直接分享一…...
颠覆传统系统管理的轻量级工具:NSudo如何重新定义权限操作
颠覆传统系统管理的轻量级工具:NSudo如何重新定义权限操作 【免费下载链接】NSudo [Deprecated, work in progress alternative: https://github.com/M2Team/NanaRun] Series of System Administration Tools 项目地址: https://gitcode.com/gh_mirrors/ns/NSudo …...
给嵌入式新手的保姆级指南:JTAG、SWD、J-Link、ST-Link到底怎么选?
嵌入式开发调试工具全指南:从JTAG到SWD的实战选择策略 第一次拿到STM32开发板时,看着板子上那排密密麻麻的调试接口针脚,我盯着J-Link和ST-Link这两个名词发了半小时呆——它们到底有什么区别?为什么有的教程用JTAG接线࿰…...
Step3-VL-10B部署案例:金融APP界面自动化测试,覆盖85%人工回归用例
Step3-VL-10B部署案例:金融APP界面自动化测试,覆盖85%人工回归用例 1. 项目背景与痛点 金融APP的每一次版本更新,都伴随着一场紧张的回归测试。测试团队需要反复验证登录、转账、理财购买、账单查询等几十个核心功能,确保新代码…...
MySQL高手第三章
从磁盘读取数据页到Buffer Pool的时候,free链表有什么用?我们怎么知道那些缓存是空闲的?当我们数据库运行起来的时候,肯定会不断的做增删改查,将磁盘上读取一个一个数据页放入Buffer Pool中对应的缓存页里去但是从磁盘…...
告别手动编码烦恼:用CANopenEditor高效定制CANopenNode对象字典
告别手动编码烦恼:用CANopenEditor高效定制CANopenNode对象字典 【免费下载链接】CANopenNode CANopen protocol stack 项目地址: https://gitcode.com/gh_mirrors/ca/CANopenNode 你是否曾为CANopenNode项目中繁琐的对象字典配置而头疼?手动编写…...
