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