我刚接触Arduino没多久,想做一个人体感应控制和红外遥控的风扇,想实现当附近没有人时或者红外遥控发出0挡信号时,风扇不转,当感应到当前有人时风扇就转,当红外遥控发出1,2,3挡信号时风扇能有不同的转速转,人体感应那部分不用考虑风扇转速问题,下面是我设计的代码,烧录进去后,串口就显示一堆乱码,风扇也不转,希望懂的人能指导一下代码应该怎么修改才能实现想实现的功能,我急要用,先谢谢大家了(开发板是ArduinoD1—UNO R3 )
#include
#include
#include
#include
int HC_SRPin = 2;
int wpeedpin = 4;
IRrecv irrecv(5);
decode_results results;
void setup()
{
pinMode(HC_SRPin, INPUT);
pinMode(wpeedpin, OUTPUT);
digitalWrite(HC_SRPin,LOW);
digitalWrite(wpeedpin,LOW);
irrecv.enableIRIn(); //开始接收信号
Serial.begin(115200);
Serial.println("ready");
}
void loop()
{
int HC_SRvalue = digitalRead(HC_SRPin);//读取传感器信号
if (irrecv.decode(&results))
{
delay(2000);
Serial.println(results.value, HEX); //以16进制换行输出接收到的信号值
Serial.println();
irrecv.resume(); //接收下一个信号
}
if(results.value == 0xFF4AB5 || HC_SRvalue == LOW){
Serial.println("当前没人,挡位为0挡");
digitalWrite(wpeedpin,LOW);
digitalWrite(wpeedpin, 0);
delay(2000);
}
else if(results.value == 0xFF6897 || HC_SRvalue == HIGH){
Serial.println("当前有人,挡位为1挡");
digitalWrite(wpeedpin,HIGH);
digitalWrite(wpeedpin, 100);
delay(2000);
}
else if(results.value == 0xFF9867 || HC_SRvalue == HIGH){
Serial.println("当前有人,挡位为2挡");
digitalWrite(wpeedpin,HIGH);
digitalWrite(wpeedpin, 200);
delay(2000);
}
else if(results.value == 0xFFB04F || HC_SRvalue == HIGH){
Serial.println("当前有人,挡位为3挡");
digitalWrite(wpeedpin,HIGH);
digitalWrite(wpeedpin, 300);
delay(2000);
}
}
建议你包含代码的部分排下版,标记成代码,不然太难读了