一、【准备】
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接线方法
策略回读及断电记忆一键保存等功能
【其他知识分享导航 关注看全部内容】
相关知识 部分截图
更多关注看其他分享,高手请路过,志同道合的朋友喜欢收藏+关注