qq_57956999 2022-09-23 14:10 采纳率: 33.3%
浏览 72

人体感应和红外遥控风扇

我刚接触Arduino没多久,想做一个人体感应控制和红外遥控的风扇,想实现当附近没有人时或者红外遥控发出0挡信号时,风扇不转,当感应到当前有人时风扇就转,当红外遥控发出1,2,3挡信号时风扇能有不同的转速转,人体感应那部分不用考虑风扇转速问题,下面是我设计的代码,烧录进去后,串口就显示一堆乱码,风扇也不转,希望懂的人能指导一下代码应该怎么修改才能实现想实现的功能,我急要用,先谢谢大家了(开发板是ArduinoD1—UNO R3 )
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>

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);
}
}

  • 写回答

1条回答 默认 最新

  • 是小明同学呀 2022-09-23 14:26
    关注

    建议你包含代码的部分排下版,标记成代码,不然太难读了

    评论

报告相同问题?

问题事件

  • 创建了问题 9月23日

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料