ESP8266 控制 LED 亮灭

一、引脚对应

二、按键控制 LED 亮灭

2.1样例1

#include <ESP8266WiFi.h>const int ledPin = D2; // LED 连接到 D2 引脚
const int keyPin = D4; // 按键连接到 D4 引脚volatile bool flag = false; // 记录 LED 状态的标志// 外部中断处理函数
ICACHE_RAM_ATTR void handleInterrupt() {flag = !flag; // 切换 LED 状态
}void setup() {pinMode(ledPin, OUTPUT);      // 设置 LED 引脚为输出模式pinMode(keyPin, INPUT_PULLUP);// 设置按键引脚为输入模式,并启用上拉电阻attachInterrupt(digitalPinToInterrupt(keyPin), handleInterrupt, FALLING); // 设置外部中断
}void loop() {if (flag) {digitalWrite(ledPin, HIGH); // 点亮 LED} else {digitalWrite(ledPin, LOW);  // 关闭 LED}
}

2.2样例2

#include <ESP8266WiFi.h>const int ledPin = D2; // LED 连接到 D2 引脚
const int keyPin = D4; // 按键连接到 D4 引脚volatile bool flag = false; // 记录 LED 状态的标志// 外部中断处理函数
ICACHE_RAM_ATTR void handleInterrupt() {flag = !flag; // 切换 LED 状态
}void setup() {pinMode(ledPin, OUTPUT);      // 设置 LED 引脚为输出模式pinMode(keyPin, INPUT_PULLUP);// 设置按键引脚为输入模式,并启用上拉电阻attachInterrupt(digitalPinToInterrupt(keyPin), handleInterrupt, FALLING); // 设置外部中断
}void loop() {// 控制 LED 状态digitalWrite(ledPin, flag ? HIGH : LOW); // 根据标志控制 LED 亮灭
}

三、代码解释

使用了 volatile bool 类型的 flag 变量来记录 LED 的状态。当按键按下时,会触发外部中断,调用 handleInterrupt() 函数来切换 flag 的值,从而切换 LED 的状态。主循环中根据 flag 的值来控制 LED 的亮灭。

四、attachInterrupt() 函数

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);

  • pin:指定要附加中断的硬件引脚。通常,你需要将其转换为中断编号,使用digitalPinToInterrupt(pin)函数。
  • ISR:是中断服务程序的函数名,也就是当中断触发时要执行的代码块。
  • mode:指定触发中断的条件,可以是 CHANGE(电平变化触发)、RISING(上升沿触发)或 FALLING(下降沿触发)。

例如,在上面的示例中,我们使用了attachInterrupt(digitalPinToInterrupt(keyPin), handleInterrupt, FALLING);将外部中断与keyPin引脚关联起来,当keyPin引脚检测到下降沿时(即按键按下),将调用handleInterrupt函数。

五、区别于传统的输入上拉

int led=2;
int key=4;
int flag=0;
void setup()
{pinMode(led,OUTPUT);pinMode(key,INPUT_PULLUP);
void loop()
{if(digitalRead(key)==LOW){if(flag==0){flag=1; digitalWrite(led,LOW);}else{flag=0;  digitalWrite(led,HIGH);}while(!digitalRead(key));//避免多次触发}}

六、按钮、继电器 比较

按钮和继电器都是常见的电子元件,用于控制电路的开关。它们各自具有一些优点和缺点,下面是它们的比较:

按钮:

优点:

  1. 简单易用: 按钮是一种简单的电子组件,易于使用和安装。
  2. 成本低廉: 按钮的制造成本通常较低,适用于成本敏感的应用场景。
  3. 可靠性高: 由于按钮没有移动部件,因此其可靠性通常比较高,不易出现故障。

缺点:

  1. 有抖动现象: 按钮在按下或释放时可能会产生抖动现象,导致多次触发,需要额外的硬件或软件去抖动处理。
  2. 操作不便: 按钮需要手动操作,对于需要远程或自动化控制的场景,操作不够便利。
  3. 只能实现离散控制: 按钮只能实现开关式的控制,无法实现连续调节或精细控制。

继电器:

优点:

  1. 能够控制高功率设备: 继电器可以控制高功率的电气设备,如电机、加热器等。
  2. 可以实现远程控制: 继电器可以通过电磁信号或网络通信实现远程控制,适用于远程监控和自动化系统。
  3. 稳定可靠: 继电器由机械开关构成,通常比较稳定可靠,适用于长期工作和恶劣环境。

缺点:

  1. 成本较高: 继电器的制造成本较高,且需要额外的驱动电路,成本较按钮更高。
  2. 存在机械磨损: 继电器中的机械开关存在磨损,长时间使用后可能需要维护或更换。
  3. 占用空间大: 继电器通常体积较大,占用空间相对较多,不适合空间有限的应用场景。

硬件和代码方面的区别:

  1. 硬件接线: 按钮通常只需要连接到一个数字输入引脚,而继电器需要连接到控制信号引脚以及电源和负载。
  2. 电路稳定性: 按钮不需要额外的驱动电路,而继电器需要驱动电路来控制电磁线圈。
  3. 软件处理: 对于按钮,可能需要在软件中添加去抖动处理逻辑;而对于继电器,可能需要编写额外的代码来实现电磁线圈的控制和保护逻辑。

七、演示

视频审核中

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

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

相关文章

(原型与原型链)前端八股文修炼Day5

一 原型链的理解 原型链定义&#xff1a; 原型链是 JavaScript 中实现对象继承的关键机制之一&#xff0c;它是一种对象之间的关系&#xff0c;通过这种关系&#xff0c;一个对象可以继承另一个对象的属性和方法。 原型链的组成&#xff1a; 每个对象都有一个指向另一个对象的…

C# 微软官方学习文档

链接&#xff1a;https://learn.microsoft.com/zh-cn/dotnet/csharp/ 在C#的学习过程中&#xff0c;我们可以参考微软官方的学习文档。它是一个免费的学习平台&#xff0c;提供了丰富的C#学习路径和教程&#xff08;如下图&#xff09;&#xff0c;对我们入门到高级应用开发都…

汇总:五个开源的Three.js项目

Three.js 是一个基于 WebGL 的 JavaScript 库&#xff0c;它提供了一套易于使用的 API 用来在浏览器中创建和显示 3D 图形。通过抽象和简化 WebGL 的复杂性&#xff0c;Three.js 使开发者无需深入了解 WebGL 的详细技术就能够轻松构建和渲染3D场景、模型、动画、粒子系统等。 T…

【自动装箱以及包装类的缓存】⭐️通过具体案例看下每种包装类的不同结果

目录 前言 一、自动装箱与拆箱&#xff08;以 Integer 包装类为例&#xff09; 二、再来看看几个示例 ​编辑三、Double ,Float 类型亦是如此吗&#xff1f; 前言 小伙伴们大家好&#xff0c;日常使用业务层方面的代码居多&#xff0c;但也不可忘了基本的一些代码格式以及原…

npm淘宝镜像源更新

目录 前情提要&#xff1a; 背景&#xff1a; 镜像源更新&#xff1a; 清楚缓存&#xff1a; 直接切换镜像源&#xff1a; 注&#xff1a;npm 补充&#xff1a; 错误解释&#xff1a; 解决方法&#xff1a; 前情提要&#xff1a; 2024 /1 /22 &#xff0c;registry.npm…

理解游戏服务器架构-逻辑底层架构

目录 前言 什么是逻辑底层架构 逻辑底层架构的职责 1&#xff09;Thread-线程 线程管理 线程通讯 线程安全锁机制 2&#xff09;Network-网络 网络模型 网络消息协议 断线重连 网络安全 防范重复消息 防范篡改消息内容 防范篡改内存数据 网络承载 3&#xff0…

HarmonyOS 应用开发之FA模型启动Stage模型UIAbility

本文介绍FA模型的三种应用组件如何启动Stage模型的UIAbility组件。 PageAbility启动UIAbility 在PageAbility中启动UIAbility和在PageAbility中启动PageAbility的方式完全相同。 import featureAbility from ohos.ability.featureAbility; import { BusinessError } from oh…

阿里云2核4G服务器租用价格,支持多少人在线?

阿里云2核4G服务器多少钱一年&#xff1f;2核4G配置1个月多少钱&#xff1f;2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年。可以在阿里云CLUB中心查看 aliyun.club 当前最新2核4G服务器精准报价、优惠券和活动信息。 阿里云官方2…

YOLOv9改进策略 :主干优化 | ConvNeXtV2:适应自监督学习,让 CNN “再一次强大”?

💡💡💡本文改进内容:完全卷积掩码自编码器框架 ConvNeXt V2,它显著提高了纯convnet在各种识别基准上的性能,包括ImageNet分类,COCO目标检测和ADE20k分割。还提供了各种尺寸的预训练ConvNeXt v2模型,从而在ImageNet上具有76.7%精度的3.7M Atto model和88.9%精度的650…

理解游戏服务器架构-部署架构

目录 前言 我所理解的服务器架构 什么是否部署架构 部署架构的职责 进程业务职责 网络链接及通讯方式 与客户端的连接方式 服务器之间连接关系 数据落地以及一致性 数据库的选择 数据访问三级缓存 数据分片 读写分离 分布式数据处理 负载均衡 热更新 配置更新 …

Unity 基于Rigidbody2D模块的角色移动

制作好站立和移动的动画后 控制器设计 站立 移动 角色移动代码如下&#xff1a; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine;public class p1_c : MonoBehaviour {// 获取动画组件private Animator …

zabbix主动发现,注册及分布式监控

主动发现 结果 主动注册 结果 分布式监控 服务机&#xff1a;132 代理机&#xff1a;133 客户端&#xff1a;135 代理机 数据库赋权&#xff1a; 代理机配置 网页上配置代理 客户端配置 网页上配置主机 重启代理机服务 网页效果

牛客周赛 Round 38(A,B,C,D,E,F,G)

比赛链接 官方讲解&#xff08;不分P不分段直接两小时怼上来是坏文明 &#xff09; 这场的题很棒&#xff0c;思维有难度&#xff0c;考察的知识点广泛&#xff0c;有深度&#xff0c;很透彻。感觉学到了很多。建议补题。 A 小红的正整数自增 思路&#xff1a; 签到。 可以…

使用 golang 以及 Gin 框架,将上传的图片在不保存至本地的情况下添加水印,并上传至阿里云 OSS

正如标题所述&#xff0c;使用golang对上传图片添加水印&#xff0c;以及将图片上传到阿里云OSS&#xff0c;网上一搜索&#xff0c;便有你想要的结果了&#xff0c;可是&#xff0c;他们却先将上传图片添加水印后保存在本地&#xff0c;而后再将添加了水印的图片上传到阿里云O…

【I.MX6ULL移植】Ubuntu-base根文件系统移植

1.下载Ubuntu16.04根文件系统 http://cdimage.ubuntu.com/ 1 2 3 4 5 2.解压ubuntu base 根文件系统 为了存放 ubuntu base 根文件系统&#xff0c;先在 PC 的 Ubuntu 系统中的 nfs 目录下创建一个名为 ubuntu_rootfs 的目录&#xff0c;命令如下&#xff1a; 【注意&…

【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的全网最详细的解析

【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的定SLAM 3D-GS 与 Nerf 和 Gaussian Splatting1. 开山之作 Nerf2. 扛鼎之作 3D Gaussian Splatting2.1 什么是3D高斯?高斯由1D推广到3D的数学推导2.2 什么是光栅化?2.3 什么是Splatting?2.4 什么是交叉优化?…

激发数据潜力:企业数据中台的策略性构建与优化_光点科技

在信息时代&#xff0c;数据是企业价值链中不可或缺的一环。构建一个策略性的企业数据中台不仅能够整合分散的数据资源&#xff0c;还能提高决策效率和业务敏捷性。本文聚焦于如何策略性地构建和优化数据中台&#xff0c;以便企业能够最大化地利用数据资源&#xff0c;推动企业…

国产AI大模型推荐(一)

文心一言 主要功能&#xff1a; 各种类型的问答、各种文本创作、推理与数学计算、写代码、聊天交流、图片生成等。 链接&#xff1a;文心一言 讯飞星火 特点&#xff1a; 内容生成能力&#xff1a;我可以进行多风格多任务长文本生成&#xff0c;例如邮件、文案、公文、作文、对…

【一】DDR3基础知识与IMG IP

【一】DDR3基础知识与IMG IP 一、DDR3的基本知识 1、DDR3全称为第三代双倍速率同步动态随机存储器 特点&#xff1a;掉电无法保存数据&#xff0c;需要周期性的刷新&#xff1b;时钟上升沿和下降沿都在传输数据&#xff1b;突发传输&#xff0c;突发长度burtst length一般为…

uniapp 微信小程序 canvas 手写板文字重复倾斜水印

核心逻辑 先将坐标系中心点通过ctx.translate(canvasw / 2, canvash / 2) 平移到canvas 中心&#xff0c;再旋转设置水印 假如不 translate 直接旋转&#xff0c;则此时的旋转中心为左上角原点&#xff0c;此时旋转示意如图所示 当translate到中心点之后再旋转&#xff0c;此…