一、【准备】

1、arduino IDE 最新版 1.8.13

2、ESP8266-12S/12F模块

3、本示例是基于久爱物联网远程控制模块讲解(4路输出1路输入+RS485)

4、其他有关知识分享链接


二、【代码分析】

/*****************************
* 久爱物联网模块测试程序
* 1、串口控制四路输出
* 2、干接点 取反电路开关状态
* 3、继电器高电平有效 HIGH开(NO-COM接线)
* 感谢您的关注,交流学习
******************************/
#define relay1 12 //1路 宏定义,四个继电器对应的针脚GPIO
#define relay2 13 //2路
#define relay3 14 //3路
#define relay4 15 //4路
#define in_pin 5  //干接点,定义为外部输入模式(或干接点或触摸按键等)
//交流电状态检测,温湿度DHT22等省略
char c;

unsigned int pinin_old_status=0;   //干接点初始化
unsigned int pinIN_cur_status=0;   //当前干接点输入状态
unsigned int pinIN_relayPinName=relay1;      //默认第一路(通过修改参数达到灵活配置的目的)
unsigned int pinIN_relayGroup[4]={relay1,relay2,relay3,relay4};  //继电器针脚组合体(实际中不能为0要判断)

int inenabledmode=-1;//干接点控制模式(0 使能关,1使能开,-1使能翻转,2与干接点一致)

先定义针脚及一些全局变量

/*****************
* 初始化都在这
*****************/
void setup()
{
  Serial.begin(115200); 
   //设为继电器为输出模式
   pinMode(relay1, OUTPUT);
   pinMode(relay2, OUTPUT);
   pinMode(relay3, OUTPUT);
   pinMode(relay4, OUTPUT);

   pinMode(in_pin,INPUT_PULLUP);
   pinin_old_status=digitalRead(in_PIN1); //干接点电平
}

针脚模式输出初始化,当然可以设置初始状态使用

digitalWrite(relay1, LOW);//针脚,电平:LOW/HIGH
/*****************
* 循环体
*****************/
void loop() {
if (Serial.available()) 
{
    c=Serial.read();//接收串口输入
    //直接一次性读取字符串,可以使用更长的字符串命令进行设置
   //本人指令较多,这里用最简单的方法实现讲解
    //_read=Serial.readString();
    //_read.replace("\r\n","");

    check_in_status(); //干接点的处理方法供参考

    //以下根据输入的值1,2,3,4 对应取反当前线路的输出状态!
    if(c=='1')
    {
      int state1 = digitalRead(relay1); //读继电器IO口的状态
      
        if(state1==0)
        {
          digitalWrite(relay1, HIGH); //打开1路
          delay(200);//延时200毫秒
          Serial.println("1on");//输出打印
       
        }
        else if (state1==1)
        {
          digitalWrite(relay1, LOW);//关闭1路
          delay(200);
          Serial.println("1off");
        }
      }
      else if(c=='2')
      {
        int state2 = digitalRead(relay2); 
        if(state2==0)
        {
         digitalWrite(relay2, HIGH); 
        Serial.println("2on");
        }
        else if (state2==1)
        {
          digitalWrite(relay2, LOW);
         Serial.println("2off");  
        }
      }
      else if(c=='3')
      {
          int state3 = digitalRead(relay3); 
          if(state3==0)
          {
           digitalWrite(relay3, HIGH); 
           Serial.println("3on");
          }
        else if (state3==1)
        {
          digitalWrite(relay3, LOW);
         Serial.println("3off");
        }
      }
      else if(c=='4')
      {
        int state4 = digitalRead(relay4); 
        if(state4==0)
        {
         digitalWrite(relay4, HIGH); 
         Serial.println("4on");
        }
        else if (state4==1)
        {
          digitalWrite(relay4, LOW); 
          Serial.println("4off");        
        }
      }
    }
}

本案例重点在于干接点(或触摸按键、自复、自锁开关)的处理方法

可以发挥自己的想象:可以实现1:1控制,1:2控制,1:3控制,1:4控制;

动作:开/关/取反/与干接点的输入一致等

这就是本物联网模块的一大特点

物联网控制入门-串口及干接点控制arduino源码分享

干接点控制核心代码示例讲解


物联网控制入门-串口及干接点控制arduino源码分享

久爱物联网模块 JIUAI-WIFI-ACDC-485-1I4O功能图解


物联网控制入门-串口及干接点控制arduino源码分享

AC220接线方法


物联网控制入门-串口及干接点控制arduino源码分享

策略回读及断电记忆一键保存等功能

【其他知识分享导航 关注看全部内容】

物联网控制入门-串口及干接点控制arduino源码分享

相关知识 部分截图

更多关注看其他分享,高手请路过,志同道合的朋友喜欢收藏+关注