一、【準(zhǔn)備】

1、arduino IDE 最新版 1.8.13

2、ESP8266-12S/12F模塊

3、本示例是基于久愛物聯(lián)網(wǎng)遠(yuǎn)程控制模塊講解(4路輸出1路輸入+RS485)

4、其他有關(guān)知識(shí)分享鏈接


二、【代碼分析】

/*****************************
* 久愛物聯(lián)網(wǎng)模塊測(cè)試程序
* 1、串口控制四路輸出
* 2、干接點(diǎn) 取反電路開關(guān)狀態(tài)
* 3、繼電器高電平有效 HIGH開(NO-COM接線)
* 感謝您的關(guān)注,交流學(xué)習(xí)
******************************/
#define relay1 12 //1路 宏定義,四個(gè)繼電器對(duì)應(yīng)的針腳GPIO
#define relay2 13 //2路
#define relay3 14 //3路
#define relay4 15 //4路
#define in_pin 5  //干接點(diǎn),定義為外部輸入模式(或干接點(diǎn)或觸摸按鍵等)
//交流電狀態(tài)檢測(cè),溫濕度DHT22等省略
char c;

unsigned int pinin_old_status=0;   //干接點(diǎn)初始化
unsigned int pinIN_cur_status=0;   //當(dāng)前干接點(diǎn)輸入狀態(tài)
unsigned int pinIN_relayPinName=relay1;      //默認(rèn)第一路(通過(guò)修改參數(shù)達(dá)到靈活配置的目的)
unsigned int pinIN_relayGroup[4]={relay1,relay2,relay3,relay4};  //繼電器針腳組合體(實(shí)際中不能為0要判斷)

int inenabledmode=-1;//干接點(diǎn)控制模式(0 使能關(guān),1使能開,-1使能翻轉(zhuǎn),2與干接點(diǎn)一致)

先定義針腳及一些全局變量

/*****************
* 初始化都在這
*****************/
void setup()
{
  Serial.begin(115200); 
   //設(shè)為繼電器為輸出模式
   pinMode(relay1, OUTPUT);
   pinMode(relay2, OUTPUT);
   pinMode(relay3, OUTPUT);
   pinMode(relay4, OUTPUT);

   pinMode(in_pin,INPUT_PULLUP);
   pinin_old_status=digitalRead(in_PIN1); //干接點(diǎn)電平
}

針腳模式輸出初始化,當(dāng)然可以設(shè)置初始狀態(tài)使用

digitalWrite(relay1, LOW);//針腳,電平:LOW/HIGH
/*****************
* 循環(huán)體
*****************/
void loop() {
if (Serial.available()) 
{
    c=Serial.read();//接收串口輸入
    //直接一次性讀取字符串,可以使用更長(zhǎng)的字符串命令進(jìn)行設(shè)置
   //本人指令較多,這里用最簡(jiǎn)單的方法實(shí)現(xiàn)講解
    //_read=Serial.readString();
    //_read.replace("\r\n","");

    check_in_status(); //干接點(diǎn)的處理方法供參考

    //以下根據(jù)輸入的值1,2,3,4 對(duì)應(yīng)取反當(dāng)前線路的輸出狀態(tài)!
    if(c=='1')
    {
      int state1 = digitalRead(relay1); //讀繼電器IO口的狀態(tài)
      
        if(state1==0)
        {
          digitalWrite(relay1, HIGH); //打開1路
          delay(200);//延時(shí)200毫秒
          Serial.println("1on");//輸出打印
       
        }
        else if (state1==1)
        {
          digitalWrite(relay1, LOW);//關(guān)閉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");        
        }
      }
    }
}

本案例重點(diǎn)在于干接點(diǎn)(或觸摸按鍵、自復(fù)、自鎖開關(guān))的處理方法

可以發(fā)揮自己的想象:可以實(shí)現(xiàn)1:1控制,1:2控制,1:3控制,1:4控制;

動(dòng)作:開/關(guān)/取反/與干接點(diǎn)的輸入一致等

這就是本物聯(lián)網(wǎng)模塊的一大特點(diǎn)

物聯(lián)網(wǎng)控制入門-串口及干接點(diǎn)控制arduino源碼分享

干接點(diǎn)控制核心代碼示例講解


物聯(lián)網(wǎng)控制入門-串口及干接點(diǎn)控制arduino源碼分享

久愛物聯(lián)網(wǎng)模塊 JIUAI-WIFI-ACDC-485-1I4O功能圖解


物聯(lián)網(wǎng)控制入門-串口及干接點(diǎn)控制arduino源碼分享

AC220接線方法


物聯(lián)網(wǎng)控制入門-串口及干接點(diǎn)控制arduino源碼分享

策略回讀及斷電記憶一鍵保存等功能

【其他知識(shí)分享導(dǎo)航 關(guān)注看全部?jī)?nèi)容】

物聯(lián)網(wǎng)控制入門-串口及干接點(diǎn)控制arduino源碼分享

相關(guān)知識(shí) 部分截圖

更多關(guān)注看其他分享,高手請(qǐng)路過(guò),志同道合的朋友喜歡收藏+關(guān)注