设备:arduino pro mini + 红外发射管(LED) + nRF24L01
原理:arduino pro mini通过nRF24L01接收到开关指令后,再由红外发射管控制空调开关。
问题:
先看两组代码:
代码1:
//定义三个数组,分别是关、开、温度设定。
unsigned int turn_off[212] = {8950,4400,600,1600,600,1600,600,500,600,500,550,500,600,500,600,1600,600,1650,550,1650,550,1650,550,1600,600,500,600,500,600,500,550,1650,600,1600,550,550,550,500,600,500,600,500,600,500,550,500,600,500,600,500,550,550,550,500,600,500,600,500,600,500,550,500,600,500,600,500,600,500,550,550,550,500,600,500,600,500,550,1650,600,500,550,550,550,500,600,500,600,500,550,500,600,550,600,450,600,1600,550,550,550,500,600,500,600,500,600,500,600,500,550,1650,550,500,600,500,600,500,600,500,550,500,600,500,600,500,600,500,550,550,550,550,550,500,600,500,600,450,600,500,600,500,600,500,600,500,600,450,600,500,600,500,600,500,600,450,600,500,650,400,650,500,550,500,600,550,550,500,550,550,550,550,550,500,600,500,600,500,600,500,550,1650,550,550,550,1650,550,450,650,500,600,500,600,450,600,500,600,1650,550,1600,600,1650,550,1600,600,500,600,500,550,550,550,500,600,25546};
unsigned int turn_on[212] = {8950,4400,600,1600,600,1600,600,500,600,500,550,550,550,500,600,1600,600,1600,600,1600,600,1650,550,1650,550,500,600,500,550,550,550,1650,600,1600,600,500,550,500,600,500,600,500,550,550,550,550,550,550,550,500,550,550,600,450,600,500,600,500,600,500,600,450,600,550,550,500,550,550,600,450,600,500,600,500,550,550,600,1600,550,550,550,500,600,550,550,500,600,500,550,550,550,500,600,500,600,1600,600,500,550,550,550,500,600,500,550,550,600,500,550,1650,550,500,600,550,550,500,550,550,550,550,550,550,550,500,600,500,550,550,550,500,600,500,600,500,600,500,550,500,600,500,550,550,550,550,550,500,600,500,600,500,600,500,550,500,600,500,550,1650,600,500,600,500,550,550,550,550,550,500,600,500,550,550,550,500,600,500,600,500,550,1650,550,550,550,1650,550,550,550,550,550,500,550,550,550,500,600,1650,550,1650,550,1650,550,1650,550,550,550,1600,600,550,550,500,600,29482};
unsigned int set_temp[212] = {8950,4450,550,1600,600,1650,550,550,550,500,600,500,550,550,550,1650,550,1650,550,1650,550,1650,550,1650,550,550,550,1650,550,550,550,500,600,1600,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,550,550,500,600,500,550,550,550,550,550,500,600,500,550,550,550,550,550,500,600,500,600,500,550,550,550,500,600,1600,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,550,550,1650,550,500,600,500,600,500,550,550,550,500,600,500,600,1600,600,500,550,550,550,500,600,500,600,500,550,550,550,550,550,500,600,500,550,550,550,550,550,500,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,1650,550,550,550,500,600,500,550,550,550,550,550,500,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,500,600,500,600,1600,600,500,550,1650,600,1600,600,1600,600,1600,600,1600,600,18540};
//通过nRF24l01接收到指令后,再由红外控制空调
switch(val)
{
case 1:irsend.sendRaw(turn_off,212,38);irsend.sendRaw(turn_off,212,38);break; //关空调
case 2:irsend.sendRaw(turn_on,212,38);irsend.sendRaw(turn_on,212,38);break; //开空调
case 3:irsend.sendRaw(set_temp,212,38);irsend.sendRaw(set_temp,212,38);break; //设定温度为26度
}
以上代码调试正常,没问题。但把代码改为代码2这样就出问题了,无法控制空调了,请各位高人指点与解决。
代码2:
//定义三个数组,分别是关、开、温度设定,跟代码1没变化。
unsigned int turn_off[212] = {8950,4400,600,1600,600,1600,600,500,600,500,550,500,600,500,600,1600,600,1650,550,1650,550,1650,550,1600,600,500,600,500,600,500,550,1650,600,1600,550,550,550,500,600,500,600,500,600,500,550,500,600,500,600,500,550,550,550,500,600,500,600,500,600,500,550,500,600,500,600,500,600,500,550,550,550,500,600,500,600,500,550,1650,600,500,550,550,550,500,600,500,600,500,550,500,600,550,600,450,600,1600,550,550,550,500,600,500,600,500,600,500,600,500,550,1650,550,500,600,500,600,500,600,500,550,500,600,500,600,500,600,500,550,550,550,550,550,500,600,500,600,450,600,500,600,500,600,500,600,500,600,450,600,500,600,500,600,500,600,450,600,500,650,400,650,500,550,500,600,550,550,500,550,550,550,550,550,500,600,500,600,500,600,500,550,1650,550,550,550,1650,550,450,650,500,600,500,600,450,600,500,600,1650,550,1600,600,1650,550,1600,600,500,600,500,550,550,550,500,600,25546};
unsigned int turn_on[212] = {8950,4400,600,1600,600,1600,600,500,600,500,550,550,550,500,600,1600,600,1600,600,1600,600,1650,550,1650,550,500,600,500,550,550,550,1650,600,1600,600,500,550,500,600,500,600,500,550,550,550,550,550,550,550,500,550,550,600,450,600,500,600,500,600,500,600,450,600,550,550,500,550,550,600,450,600,500,600,500,550,550,600,1600,550,550,550,500,600,550,550,500,600,500,550,550,550,500,600,500,600,1600,600,500,550,550,550,500,600,500,550,550,600,500,550,1650,550,500,600,550,550,500,550,550,550,550,550,550,550,500,600,500,550,550,550,500,600,500,600,500,600,500,550,500,600,500,550,550,550,550,550,500,600,500,600,500,600,500,550,500,600,500,550,1650,600,500,600,500,550,550,550,550,550,500,600,500,550,550,550,500,600,500,600,500,550,1650,550,550,550,1650,550,550,550,550,550,500,550,550,550,500,600,1650,550,1650,550,1650,550,1650,550,550,550,1600,600,550,550,500,600,29482};
unsigned int set_temp[212] = {8950,4450,550,1600,600,1650,550,550,550,500,600,500,550,550,550,1650,550,1650,550,1650,550,1650,550,1650,550,550,550,1650,550,550,550,500,600,1600,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,550,550,500,600,500,550,550,550,550,550,500,600,500,550,550,550,550,550,500,600,500,600,500,550,550,550,500,600,1600,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,550,550,1650,550,500,600,500,600,500,550,550,550,500,600,500,600,1600,600,500,550,550,550,500,600,500,600,500,550,550,550,550,550,500,600,500,550,550,550,550,550,500,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,1650,550,550,550,500,600,500,550,550,550,550,550,500,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,500,600,500,600,500,550,550,550,500,600,500,600,1600,600,500,550,1650,600,1600,600,1600,600,1600,600,1600,600,18540};
//通过nRF24l01接收到指令后,再由红外控制空调,修改了以下代码。
switch(val)
{
case 1:irsend.sendRaw(turn_off,212,38);irsend.sendRaw(turn_off,212,38);break; //关空调
case 2:irsend.sendRaw(turn_on,212,38);delay(500);irsend.sendRaw(set_temp,212,38);break; //开空调,并设定温度为26度
}
删除了“delay(500);”代码也是一样无法开/关空调与设定温度。 |