#include <WiFiManager.h>//自动配网
#include <ESP8266WiFi.h>//wifi函数
#include <DNSServer.h>
#include <ESP8266WebServer.h>

#include <PubSubClient.h>//MQTT库函数

#include <Ticker.h>//定时器库函数

////////////////////////////////////
#include <IRremoteESP8266.h>//红外函数
#include <IRrecv.h>
#define RECV_PIN 14 //D5 红外接收引脚
IRrecv irrecv(RECV_PIN); //红外遥控初始化
decode_results results; //储存接收到的红外遥控信息
//////////////////////////////////////////////

//int LED = //指定LED来作为是否接收红外信号提醒的指示
int ledOutput = LED_BUILTIN;//板载LED灯
Ticker ticker;//实例化联网状态LED定时器
//Ticker ticker1;//是否接收到红外信号LED显示
void setup() {
  ///////////////////////
  pinMode(LED,OUTPUT);
  digitalWrite(LED,LOW);
  irrecv.enableIRIn();//启动红外
  ///////////////////////
 Serial.begin(9600);//打开串口通讯
 pinMode(ledOutput,OUTPUT);//初始化LED状态
 ticker0.attach_ms(100,wifiStatus);//100毫秒,定时执行LED的取反,直到WIFI连接
 
 ticker1.attach_ms(400,irReceiver);//400毫秒 定时检测是否有红外信号
 WiFiManager wifiManager;//实例化自动配网
 wifiManager.autoConnect("AP");//启动自动配网
 Serial.println("");
 Serial.print("ESP8266 Connected to ");
 Serial.println(WiFi.SSID());
 Serial.print("IP address:\t");
 Serial.println(WiFi.localIP());

}

//红外判断函数
void irReceiver(){
  if (irrecv.decode(&results)){
      if(results.value == 0x40BE629D){//家里电视开关红外码
         //返回标志
        }
      irrecv.resume();//清除红外等待再次接收  
     }
  
  }

//WIFI连接指示灯提醒函数  
void wifiStatus(){
  if (WiFi.status() == WL_CONNECTED){//判断WIFI是否连接,已连接就关闭定时器
    digitalWrite(ledOutput,HIGH);//设置为高。LED灭
     ticker.detach();//关闭定时器
    }
  else {
    digitalWrite(ledOutput,!digitalRead(ledOutput));//取返led
    }  
  
  }

void loop() {
 

}
最后修改:2022 年 03 月 08 日
如果觉得我的文章对你有用,请随意赞赏