一、【準(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)
干接點(diǎn)控制核心代碼示例講解
久愛物聯(lián)網(wǎng)模塊 JIUAI-WIFI-ACDC-485-1I4O功能圖解
AC220接線方法
策略回讀及斷電記憶一鍵保存等功能
【其他知識(shí)分享導(dǎo)航 關(guān)注看全部?jī)?nèi)容】
相關(guān)知識(shí) 部分截圖
更多關(guān)注看其他分享,高手請(qǐng)路過(guò),志同道合的朋友喜歡收藏+關(guān)注