基于Arduino IDE开发的ESP8266(ESP-12F)项目4 ——中断及高级输入输出

 本次写这篇文章是自己做一下学习记录,如有错误,还请大家斧正!!!

日后及时修正!感谢支持!

 欢迎大家的关注        点赞        收藏        留言


目录

前言

        一、新建工程

        二、项目函数介绍                                         

        三、代码编写

        四、编译、烧录、运行

结束语


前言

        中断是每一位单片机开发者比较实用的一个基本外设、无论你是学习51单片机还是STM32等,都会接触到这个项目。可以说中断的合理使用可以让你的程序执行起来有意想不到的效果。这里除了中断,还会介绍两个高级的输入输出函数。


 一、新建工程

        首先打开Arduino IDE,点击 文件——> 点击新建,就会生成一个新的工程模板了。 (还可以点任务栏中“折了一角的书页”快速新建)。

 然后给项目重命名,然后再保存。

 这样一个新的工程就建好了。


二、项目函数介绍

1. 中断函数

        无论什么单片机都具备中断功能,这款单片机也不例外,接下来就带大家接触它的中断服务函数。

        这里我就来解释以下这个函数说明一下它的功能及用途:

  (1)attachInterrupt(pin, ISR, mode)函数

功能响应中断的处理程序——中断函数,当中断触发后,ESP8266便会运行这个函数。
作用对中断引脚进行初始化配置,以开启ESP8266的外部中断功能
attachInterrupt(pin, ISR, mode)
参数说明
pin指定引脚编号的配置
value中断函数名
mode中断模式。有以下两种常用模式:LOW:低电平触发;HIGH:高电平触发;

  (2)detachInterrupt(pin)函数

功能

如果你不需要使用外部中断了,你可以用中断分离函数detachInterrupt() 来关闭中断功能。

参数需要禁用中断的引脚。

2. 高级输入输出函数        

(1)tone()函数

功能主要用于ESP8266连接蜂鸣器或扬声器发声。
作用可以让指定引脚产生一个占空比为50%的指定频率的方波。
tone(pin, frequency)     //或 tone(pin, frequency, duration)
参数说明
pin需要输出方波的引脚
frequency输出的频率,unsigned int型
duration方波持续的时间,单位毫秒。如果没有该参数,ESP8266将持续发出设定的音调,直到你改变发声频率。

(2)noTone(pin)函数

功能

停止指定引脚上的方波输出。

参数需要停止方波输出的引脚

(3)pulseIn()函数

       检测指定引脚上的脉冲信号宽度。

说明:例如当要检测高电平脉冲时,pulseIn() 会等待指定引脚输入的电平变高,当变高后开始记时,直到输入电平变低,停止计时。pulseln() 函数会返回这个脉冲信号持续的时间,即这个脉冲的宽度。函数还可以设定超时时间。如果超过设定时间,仍未检测到脉冲,则会退出pulseIn()函数并返回0。当没有设定超时时间时,pulseIn() 会默认1秒钟的超时时间。

pulseIn(pin, value) //或 pulseIn(pin, value, timeout)
参数说明
pin需要读取脉冲的引脚
value需要读取的脉冲类型,HIGH或LOW
timeout超时时间,单位微秒,数据类型为无符号长整型

返回值

返回脉冲宽度,单位微秒,数据类型为无符号长整型。如果在指定时间内没有检测到脉冲,则返回0。

 三、代码编写

示例:用中断控制下的按键点亮LED灯

        示例代码如下:

void setup() {
  // put your setup code here, to run once:
  pinMode(2,OUTPUT);
  pinMode(5,INPUT);
}

void LED_On(void)
{
  digitalWrite(2,LOW);
}

//void LED_Off(void)
//{
//  digitalWrite(2,HIGH);
  detachInterrupt(5);
//}


void loop() {
  // put your main code here, to run repeatedly:
//  if(digitalRead(5)==0)
//  {
    attachInterrupt(5,LED_On,LOW);
    detachInterrupt(5);
//  }
//  else
//    LED_Off();
}

 四、编译、烧录、运行

        在我前一篇博文就介绍了如何编译、烧录,这里就不再过多赘述了,还望谅解!

应视频的插入不便,这里就用图片代替,抱歉;其功能可以一目了然,当按键按下触发中断LED灯就被点亮了。


结束语

        关于此次基于Arduino IDE开发的ESP8266(ESP-12F)项目4 ——中断及高级输入输出项目的介绍就讲到这里了,此次教程的重点在于中断的使用,关于高级输入输出函数我给出链接供大家学习。调声函数 (arduino.cn)pulseIn() (arduino.cn)。如果什么问题请再评论区留言。

        接下来会陆陆续续发布一些其他的教程,敬请期待!感谢大家的支持!如有觉得这篇文章对你有所帮助的,还请点赞、收藏吧!

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是连接RFID-RC522模块到ESP8266并在Arduino IDE上运行的步骤: 材料: - ESP8266开发板 - RFID-RC522模块 - 杜邦线(至少需要7根) 步骤: 1. 连接RFID-RC522模块到ESP8266开发板 - 将RFID-RC522模块的SCK引脚连接到ESP8266的D5引脚 - 将RFID-RC522模块的MOSI引脚连接到ESP8266的D7引脚 - 将RFID-RC522模块的MISO引脚连接到ESP8266的D6引脚 - 将RFID-RC522模块的SS引脚连接到ESP8266的D8引脚 - 将RFID-RC522模块的RST引脚连接到ESP8266的D0引脚 - 将RFID-RC522模块的3.3V引脚连接到ESP8266的3.3V引脚 - 将RFID-RC522模块的GND引脚连接到ESP8266的GND引脚 2. 下载并安装MFRC522库 - 在Arduino IDE中打开“库管理器”(菜单栏:工具 > 管理库) - 搜索“MFRC522”库 - 选择最新版本并点击“安装” 3. 编写代码 - 在Arduino IDE中打开一个新的空白文件 - 复制以下代码并粘贴到文件中 ```c++ #include <SPI.h> #include <MFRC522.h> #define RST_PIN D0 #define SS_PIN D8 MFRC522 mfrc522(SS_PIN, RST_PIN); // 创建MFRC522实例 void setup() { Serial.begin(9600); // 与电脑通信的串口初始化 SPI.begin(); // 初始化SPI总线 mfrc522.PCD_Init(); // 初始化MFRC522 } void loop() { // 检测是否有新的卡片出现 if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) { // 输出卡片的UID Serial.print("UID tag :"); String content = ""; byte letter; for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : ""); Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } Serial.println(); Serial.print("Message : "); content.toUpperCase(); if (content.substring(1) == "XX XX XX XX") { Serial.println("Authorized access"); // 这里可以加入执行授权访问的代码 } else { Serial.println("Access denied"); } } } ``` - 将代码上传到ESP8266开发板 4. 测试 - 打开串口监视器(菜单栏:工具 > 串口监视器) - 将一个RFID卡片放到RFID-RC522模块旁边 - 串口监视器将会显示卡片的UID - 如果卡片的UID与代码中的授权UID匹配,则串口监视器将打印“Authorized access”,否则打印“Access denied”

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值