arduino如何编写用红外遥控器控制小风扇的速度

打算用arduino编写用红外遥控器控制小风扇的速度,代码如下:

#include
#include
boolean a = false;
int b = 255;
Servo servo;
IRrecv irRecv(12);
decode_results results;
void setup(){
  servo.attach(9);
  servo.write(90);
  irRecv.enableIRIn();
  Serial.begin(9600);
}

void loop(){
  if(irRecv.decode(&results))
  {
    Serial.println(results.value,HEX);
    switch(results.value){
      case 0xFFC23D:{
        if (a == false){
          a = true;
        }
        else{
          a = false;
        }
      }
      break;
      case 0xFF22DD:{
        b = b - 5;
        if (b <= 50){
          b = 50;
        }
      }
      break;
      case 0xFF02FD:{
        b = b + 5;
        if(b >= 255){
          b = 255;
        }
      }
      break;
      case 0xFFE01F:{
        servo.write(180);
      }
      break;
      case 0xFFA857:{
        servo.write(0);
      }
   }
    if(a == false){
      analogWrite(11,255);
      analogWrite(3,b);
    }
    else{
      analogWrite(11,0);
      analogWrite(3,0);
    }
    irRecv.resume();
  }
}


并未出现语法错误,却不能达到调速效果:按减速键却自动停止运行;无法加速
这是怎么回事?各位能帮忙解决吗?请在评论区发出正确代码或改错方法,谢谢

建议两步走:
1,测试调速功能,在代码里写几个固定速度,分别下载测试,看是否能正确工作在不同的速度
2,测试红外接收功能,把收到的红外编码显示出来确认是否是期望的数值。

建议你看下这篇博客Arduino------红外控制舵机风扇