2026-03

舵机接13

LED接10

遥控器接A2

电位器接A3

#include <Servo.h>
#include <IRremote.h>
const String IR_PROTOCOL_TYPE[] = {
    "UNKNOWN",
    "PULSE_DISTANCE",
    "PULSE_WIDTH",
    "DENON",
    "DISH",
    "JVC",
    "LG",
    "LG2",
    "NEC",
    "PANASONIC",
    "KASEIKYO",
    "KASEIKYO_JVC",
    "KASEIKYO_DENON",
    "KASEIKYO_SHARP",
    "KASEIKYO_MITSUBISHI",
    "RC5",
    "RC6",
    "SAMSUNG",
    "SHARP",
    "SONY",
    "ONKYO",
    "APPLE",
    "BOSEWAVE",
    "LEGO_PF",
    "MAGIQUEST",
    "WHYNTER"};
IRrecv irrecv(A2); // 接收头引脚号
int f = -1;
Servo sv;//以上两句放setup前面
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  sv.attach(13);
  irrecv.enableIRIn();
  pinMode(10,OUTPUT);
  pinMode(A3,INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  if (irrecv.decode())
  {
    struct IRData *pIrData = &irrecv.decodedIRData;
    long ir_item = pIrData->decodedRawData;
    String irProtocol = IR_PROTOCOL_TYPE[pIrData->protocol];
    Serial.print("IR TYPE:" + irProtocol + "\tVALUE:");
    Serial.println(ir_item, HEX);
    irrecv.resume();
    Serial.println(ir_item, HEX);
    //以下的分支结构为按键编码,按几号按键就把赋值为几
    if (ir_item == 0xE916FF00)
    {
      f = 0;
    }
    else if (ir_item == 0xf30cff00)
    {
      f = 1;
    }
    else if (ir_item == 0xe718ff00)
    {
      f = 2;
    }
    else if (ir_item == 0xA35EFF00)
    {
      f = 3;
    }
  }
  //以下分支结构为按对应按键时循环执行什么内容
  if (f == 1)
  {
    sv.write(map(analogRead(A3),0,1023,0,180));
    analogWrite(10,map(analogRead(A3),0,1023,0,255));
  }
  else if (f == 2)
  {
    if(analogRead(A3)<256){
      sv.write(0);
      digitalWrite(10,0);
    }
    else if(analogRead(A3)>=256 and analogRead(A0)<768){
      sv.write(90);
      digitalWrite(10,1);
    }
    else if(analogRead(A3)>=768){
      sv.write(180);
      digitalWrite(10,1);
      delay(100);
      digitalWrite(10,0);
      delay(100);
    }
  }
}