锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

arduino微信远程继电器控制电灯设计

时间:2023-10-23 14:37:01 s设定继电器

/**

* @par Copyright (C): 2010-2019, Shenzhen Yahboom Tech

* @file 3.远程继电器控制灯

* @author zhoujie

* @version V1.0

* @date 2017.11.14

* @brief arduino物联网实验

* @details

* @par History见如下说明

*

*/

//定义引脚

int RELAY_Pin = 9; //继电器信号端S

int incomingByte = 0; // 接收到的 data byte

String inputString = ""; // 用于存储接收到的内容

boolean newLineReceived = false; // 前一次数据结束标志

boolean startBit= false;//协议开始标记

String returntemp = ""; //存储返回值

void setup()

{

pinMode(RELAY_Pin, OUTPUT); //初始化RELAY IO口为输出模式

Serial.begin(9600); //波特率9600 (Wifi通信设置波特率)

digitalWrite(RELAY_Pin, LOW); //RELAY低电平的初始化

}

/**

* Function loop

* @author zhoujie

* @date 2017.11.14

* @brief 根据协议完成接收数据的相应功能

* @param[in] void

* @retval void

* @par History 无

*/

void loop()

{

//$RELAY,1#

while (newLineReceived)

{

if(inputString.indexOf("RELAY") == -1)//如果要检索的字符串值RELAY”没有出现

{

returntemp = "$RELAY,2,#";//返回不匹配

Serial.print(returntemp); //返回协议数据包

inputString = ""; // clear the string

newLineReceived = false;

break;

}

if(inputString[7] == '1')///关闭继电器开关

{

int i = inputString.indexOf(","); ///从接收到的数据中检索字符串

int ii = inputString.indexOf("#", i);//从接收到的数据中以i为起始位置检索字符串“#”的位置

if(ii > i && ii > 0 && i > 0 ) //如果ii和i的顺序正确,检索到ii与i存在

{

digitalWrite(RELAY_Pin, HIGH); ///将高电平输出到继电器S信号端,关闭继电器开关

}

else //检索到ii和i的顺序错误或未检索到ii或者i

{

returntemp = "$RELAY,1,#";//返回匹配失败

Serial.print(returntemp); //返回协议数据包

inputString = ""; // clear the string

newLineReceived = false;

break;

}

}

else //打开继电器开关

{

digitalWrite(RELAY_Pin, LOW);///将低电平输出到继电器S信号端

}

returntemp = "$RELAY,0,#";//返回匹配成功

Serial.print(returntemp); //返回协议数据包

inputString = ""; // clear the string

newLineReceived = false;

}

}

/**

* Function serialEvent

* @author zhoujie

* @date 2017.11.14

* @brief 串口接收中断 serialEvent()是IDE1.0.不清楚为什么大多数人不愿意使用未来版本的新功能。这相当于中断功能!

* @param[in] void

* @retval void

* @par History 无

*/

void serialEvent()

{

while (Serial.available()) //如果串口接收到数据,则进入循环

{

incomingByte = Serial.read(); ///一个字节一个字节读取,下一句话读取并放入字符串数组形成完成的数据包

if(incomingByte ==

) //如果字节来了,

,开始读取

{

startBit= true;

}

if(startBit == true)

{

inputString = (char) incomingByte; // 全双工串口不用在下面加延迟,半双工要加//

}

if (incomingByte == '#')

{

newLineReceived = true; //如果字节是‘#’,读取结束

sartBit = false;

}

}

}

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章