Arduino之干接点控制继电器取反实例

重点学习INPUT_PULLUP

目的:
控制电路中有一路自由干接点,设置为自由模式可以控制继电器中任何一路或多路的方法,本示例仅控制1路。

物联网干接点控制继电器取反

//关注 久爱物联网 jiuaiiot 微信公众号可远程体验
//变量定义
#define in_PIN1 5       //干接点针脚定义
#define relay_PIN1 15   //继电器1
#define relay_PIN2 12
#define relay_PIN3 13
#define relay_PIN4 14

int pinin_old_status=0;//干接点初始化状态
/**********************
* 检查干接点输入状态
* 对应继电器(默认第一路)状态取反
*********************/
void check_in_status()
{
  int pinin_cur_status=digitalRead(in_PIN1);//干接点信号状态
  int relayStatus=digitalRead(relay_PIN1);//继电器1
  if(pinin_old_status!=pinin_cur_status)
  {//测试干接点控制继电器1的状态取反
    digitalWrite(relay_PIN1,!relayStatus);//根据5的电平,取反继电器1的输出状态
    pinin_old_status=pinin_cur_status;
    if(digitalRead(relay_PIN1)==HIGH)
    {//此方法是通过MQTT对客户端发布最新状态同步
      mqtt_pub(pub_topic_name1,"55 AA AA AA AA 82 01 01");//1路开
    }else{
      mqtt_pub(pub_topic_name1,"55 AA AA AA AA 82 01 00");//1路关
    }
  }
}

初始化setup


void setup() {  
  Serial.begin(115200);//启用串口,串口波特率115200  
  while(Serial.read()>= 0){}//清除串口缓存,,Serial.flush();等待
  pinMode(relay_PIN1, OUTPUT);//继电器1-15 输出模式
  pinMode(relay_PIN2, OUTPUT);//继电器2-12 输出模式
  pinMode(relay_PIN3, OUTPUT);//继电器3-13 输出模式
  pinMode(relay_PIN4, OUTPUT);//继电器4-14 输出模式
  pinMode(in_PIN1,**INPUT_PULLUP**);//触摸按钮或干接点5 **重点是这一参数INPUT_PULLUP***输入上拉模式***否则不起作用* 

  //继电器状态初始化低高平有效-关NO
  digitalWrite(relay_PIN1, LOW);
  digitalWrite(relay_PIN2, LOW);
  digitalWrite(relay_PIN3, LOW);
  digitalWrite(relay_PIN4, LOW);   

  pinin_old_status=digitalRead(in_PIN1); //干接点电平信号
}

循环体loop设置

void loop() {
//其他代码....
check_in_status();//干接点控制状态处理
delay(10);
}

集成到公众号中控制
模块功能介绍
演示视频bilibili上传审核中,请搜索 JIUAINET 中观看
久爱物联网学习开发板

猜你喜欢

转载自blog.csdn.net/uaime/article/details/106675259