找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 400|回复: 0
打印 上一主题 下一主题
收起左侧

AduinoC+ ESP32 当电灯大师

[复制链接]
跳转到指定楼层
楼主
ID:1130086 发表于 2024-8-2 17:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.前言

不论学习什么单片机,最简单的外设莫过于 IO 口的高低电平控制 LED,本节课将向大家介绍如何使用AduinoC控制 ESP32 的 GPIO 输出。通过本节课的学习,让大家对ArduinoC的程序架构有一定的认识,为以后大型项目程序学习打下基础,增强信心。
2.esp32简介

ESP32模块是ESP8266的升级版本。除了Wi-Fi模块,该模块还包含蓝牙4.0模块。双核CPU工作频率为80至240 MHz,包含两个Wi-Fi和蓝牙模块以及各种输入和输出引脚, ESP32是物联网项目的理想选择。
虽然ESP32的引脚数比常用的处理器少,但在引脚上复用多个功能时不会遇到任何问题。
警告:ESP32引脚的电压电平为3.3伏。如果要将ESP32连接到其他工作电压为5伏的设备,则应使用电平转换器转换电压电平。


3.前提下载
Software | Arduino下载Arduino IDE 2.x版本

4.硬件支持
esp32一块
杜邦线若干
LED灯一盏

5.开始点灯

在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就开始逐个闪烁了。
总结

恭喜你,完成了点灯大师的挑战,希望你在下一次的蜂鸣器的挑战中也能像这次一样。(达成成就:点灯)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表