一、【準備】
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控制;
動作:開/關/取反/與干接點的輸入一致等
這就是本物聯網模塊的一大特點

干接點控制核心代碼示例講解

久愛物聯網模塊 JIUAI-WIFI-ACDC-485-1I4O功能圖解

AC220接線方法

策略回讀及斷電記憶一鍵保存等功能
【其他知識分享導航 關注看全部內容】

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