物联网之ESP32控制GPIO输出点亮LED、网页控制LED开关

news2024/9/25 17:18:35

MENU

  • 前言
  • 原理
    • GPIO引脚
    • LED
  • 硬件电路设计
  • 软件设计
    • 1、点亮一颗LED
    • 2、闪烁的LED
    • 3、网页控制LED开关


前言

不论学习什么单片机,最简单的外设莫过于IO口的高低电平控制LED,本文介绍如何使用Arduino控制ESP32的GPIO输出。通过本文的学习,掌握一定的Arduino程序架构知识,为以后大型项目程序学习打下基础,增强信心。


原理

GPIO引脚

引脚又叫管脚,英文叫Pin,就是从集成电路(芯片以及一些电子元件)内部电路引出与外围电路的接线的接口。
在ESP32开发板上,可以把这些称为引脚,引脚是从ESP32芯片内部引出,可以看到每个引脚都标有自己独特的名字。

ESP32

其中有一类引脚叫GPIO引脚,负责输入/输出电压。开发板上D开头的引脚都是这种引脚,比如D2、D4、D15等等。
输入暂时不讲,这里先讲一下输出,简单来说,每个GPIO都可以输出高低电平。
电路上某点的电压(对公共参考点)或电位是高还是低。比如在逻辑电路中,高于某个数值的电位称其为高电位,或高电平,低于某个数值,为低电位或低电平。比如ESP32中,高电平的数值大于2.5V,低电平的数值小于0.5V,具体的数值最好通过测试研究来确定。


LED

LED(light-emitting diode)即发光二极管。它具有单向导电性,通过5mA左右电流即可发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管,一般我们控制在3mA~20mA之间,通常会在LED管脚上串联一个电阻,目的就是限制通过发光二极管的电流不要太大,因此这些电阻又可以称为限流电阻。当发光二极管发光时,测量它两端电压约为1.7V,这个电压又叫做发光二极管的导通压降。
发光二极管正极又称阳极,负极又称阴极,电流只能从阳极流向阴极。直插式发光二极管长脚为阳极,短脚为阴极。

LED


硬件电路设计

材料名称数量
直插式 LED1
1kΩ 电阻1
杜邦线(跳线)若干
面包板1

LED的正极接开发板的D12引脚,并串联一个电阻,负极接GND。

电路图

一定要接电阻,不然会由于电流过大,烧坏LED。


软件设计

1、点亮一颗LED

如果想要点亮这颗LED,只需要先设定相关引脚为输出模式,然后给这个引脚赋值一个高电平即可。

// 设置LED引脚
int led_pin = 12;

void setup() {
  // 设定引脚为输出模式
  pinMode(led_pin, OUTPUT);
  // 点亮LED
  digitalWrite(led_pin, HIGH);
}

void loop() {
  
}

通过IDE编写上述代码,然后运行,此时会看到电路中的LED灯被点亮。


2、闪烁的LED

已经成功点亮一颗LED,接下来,可以尝试一下稍微复杂一点的逻辑,比如让颗LED闪烁。
实现LED闪烁的原理很简单,就是在loop函数中使用延时函数delay。先设置高电平,延时X秒,再设置低电平,延时X秒,之后就不断循环该语句即可。
在之前的初识Arduino编程语言中,已经学习loop函数的用法,如果想要让灯泡一直闪烁,则需要在loop函数中不断改变LED状态。

// 设置LED引脚
int led_pin = 12;

void setup() {
  // 设定引脚为输出模式
  pinMode(led_pin, OUTPUT);
}

void loop() {
  // 点亮LED
  digitalWrite(led_pin, HIGH);
  // 等待一段时间
  delay(1000);
  // 关闭LED
  digitalWrite(led_pin, LOW);
  // 等待一段时间
  delay(1000);
}

运行程序,LED就闪烁了。


3、网页控制LED开关

敬请期待…

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

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

相关文章

Qt26代理delegate

代理delegate mainwindowmainwindow.hmainwindow.cpp datedelegatedatedelegate.hdatedelegate.cpp combodelegatecombodelegate.hcombodelegate.cpp spindelegatespindelegate.hspindelegate.cpp main.cpp运行图 mainwindow mainwindow.h #ifndef MAINWINDOW_H #define MAIN…

Java8新特性-Optional的使用

写在前面 最开始学java的时候,总能听到别人说java8的新特性,比如lambda表达式,stream流等等。但是第一次接触Optional是在公司前辈的代码中看到的。最开始我还以为是公司自己的工具类,也没太注意。后来才知道他也是java8最重要的…

西安十大产业园,哪一个将成为你事业的新起点?

每个人在追求事业成功的过程中,都在寻找那个能够助力自己腾飞的平台,而西安的十大产业园无疑提供了丰富多样的选择: 一、西安国际数字影像产业园 1. 园区概况 西安国际数字影像产业园是西安乃至西北地区在数字影像产业领域的重要基地&#…

基于视觉-语言模型的机器人任务规划:ViLaIn框架解析

目录 一、引言二、ViLaln框架介绍总体框架概述对象估计器初始状态估计器目标估计器纠错重提示机制(CR) 参考文献 一、引言 随着机器人技术的不断发展,如何通过自然语言指令引导机器人执行任务成为了一个重要的研究方向。自然语言作为人与机器…

mysql连接oceanbase数据库集群+租户

mysql集成的有连接oceanbase数据库的方式,所以只需要对参数进行修改即可。 url: jdbc:mysql://[ip地址]:[端口]/[数据库]?useUnicodetrue&characterEncodingUTF-8&serverTimezoneUTC //其他参数根据需求设置username: [用户名][租户名]#[集群名]password: …

【CTF Web】BUUCTF Upload-Labs-Linux Pass-10 Writeup(文件上传+PHP+扩展名双写绕过)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的…

springboot+vue+mybatisjsp广播剧制作订阅系统+PPT+论文+讲解+售后

随着世界经济信息化、全球化的到来和互联网的飞速发展,推动了各行业的改革。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、动态的、交互友好的、高效的广播剧制作订阅系统。当前的信息管理存在工作效…

element-ui打包之后图标不显示,woff、ttf加载404

1、bug 起因 昨天在 vue 项目中编写 element-ui 的树形结构的表格,发现项目中无法生效,定位问题之后发现项目使用的 element-ui 的版本是 2.4.11 。看了官方最新版本是 2.15.14,然后得知 2.4.11 版本是不支持表格树形结构的。于是决定升级 el…

Python 在Excel中应用和取消多种不同类型的数据筛选

目录 安装Python Excel处理库 Python 在 Excel 中应用文本筛选 Python 在 Excel 中应用数字筛选 Python 在 Excel 中应用字体颜色、单元格颜色或图标集筛选 Python 在 Excel 中应用日期筛选 Python 在 Excel 中应用动态日期筛选 Python 在 Excel 中筛选空单元格或非空单…

再做leetcode42hard题接雨水——双指针法

再做leetcode42hard题接雨水——双指针法 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释&#xff1a…

在jenkins中获取git的修改记录的方法

获取 Jenkins API Token: 首先,登录到你的 Jenkins 服务器。 点击右上角的用户名,然后选择“Configure(配置)”。 在“API Token”部分,生成一个新的 API Token 或使用已有的 Token。 构建 API 请求 URL&a…

k8s上搭建devops环境

一、gitlab 1.安装gitlab # 下载安装包 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.9.1-ce.0.el7.x86_64.rpm # 安装 rpm -i gitlab-ce-15.9.1-ce.0.el7.x86_64.rpm # 编辑 vi /etc/gitlab/gitlab.rb 文件 # 修改 external_url 访问路径 htt…

网络安全工程师培训费用

在当今这个信息化迅猛发展的时代,网络安全已成为各行各业关注的焦点。作为保障网络信息安全的中坚力量,网络安全工程师的需求量逐年攀升。随之而来的是,越来越多的人对网络安全工程师的培训费用充满了好奇。本文将为您详细解析这一问题&#…

内存卡不小心格式化了有办法恢复数据吗?

在数字时代,内存卡作为便携式存储设备,广泛应用于手机、相机等设备中。然而,由于操作不当或设备故障,内存卡有时会被不小心格式化,导致存储在其中的重要数据丢失。 面对这种情况,许多人可能会感到焦虑&…

C语言求100以内的素数

问题:用C语言求出100以内的素数。 分析:素数,即质数,是指只可以被1和本身整除的数。此时可以考虑用循环的方法来用这个数除以所有1001以内的数,若存在余数为0的情况,则说明该数不是素数;此外&am…

MyBatis 一级缓存原理

优质博文&#xff1a;IT-BLOG-CN 一、一级缓存配置 MyBatis一级缓存默认是开启的。如果需要显示的开启&#xff0c;需要在MyBaits配置文件中<settings>标签中添加如下语句&#xff1a; <settings><setting name"localCacheScope" value"SESSI…

k8s之HPA实践——实现Web服务器的自动伸缩特性

文章目录 在生产环境中&#xff0c;总会有一些意想不到的事情发生&#xff0c;比如公司网站流量突然升高&#xff0c;此时之前创建的Pod已不足以支撑所有的访问&#xff0c;而运维人员也不可能24小时守着业务服务&#xff0c;这时就可以通过配置HPA&#xff0c;实现负载过高的情…

APP黄金流量:如何完成首页入口资源位最大价值

首页资源位的使用很重要 首页资源位&#xff0c;是指用户打开并进入 App 后&#xff0c;所有直接展示给用户内容&#xff0c;即不需要用户滑动页面就看到的内容&#xff0c;都是首页资源位。 移动互联网流量即王道&#xff0c;而 App 首页展示给用户的内容&#xff0c;会直接…

基于CNN卷积神经网络迁移学习的图像识别实现

基于CNN卷积神经网络迁移学习的图像识别实现 基于CNN卷积神经网络迁移学习的图像识别实现写在前面一&#xff0c;原理介绍迁移学习的基本方法1.样本迁移&#xff08;Instance based TL&#xff09;2.特征迁移&#xff08;Feature based TL&#xff09;3.模型迁移&#xff08;Pa…

html+css网页设计 我的家乡5个页面

htmlcss网页设计 我的家乡5个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#xff0c;访…