一、【準備】

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源碼分享

相關知識 部分截圖

更多關注看其他分享,高手請路過,志同道合的朋友喜歡收藏+關注