//www.elegoo.com //2016.12.9 #include "IRremote.h" //#include #include int receiver = 11; // Signal Pin of IR receiver to Arduino Digital Pin 11 SoftwareServo servoA; // create servo object to control a servo pin8 int pos = 90; // variable to store the servo position int lastIRstate = 0; int curIRstate = 1; /*-----( Declare objects )-----*/ IRrecv irrecv(receiver); // create instance of 'irrecv' decode_results results; // create instance of 'decode_results' /*-----( Function )-----*/ void translateIR() // takes action based on IR code received // describing Remote IR codes { switch(results.value) { //case 0xFFA25D: Serial.println("POWER"); break; //case 0xFFE21D: Serial.println("FUNC/STOP"); break; //case 0xFF629D: Serial.println("VOL+"); break; case 0xFF22DD: Serial.println("FAST BACK"); curIRstate = 1; break; //case 0xFF02FD: Serial.println("PAUSE"); break; case 0xFFC23D: Serial.println("FAST FORWARD"); curIRstate = 2; break; //case 0xFFE01F: Serial.println("DOWN"); break; //case 0xFFA857: Serial.println("VOL-"); break; //case 0xFF906F: Serial.println("UP"); break; //case 0xFF9867: Serial.println("EQ"); break; //case 0xFFB04F: Serial.println("ST/REPT"); break; //case 0xFF6897: Serial.println("0"); break; //case 0xFF30CF: Serial.println("1"); break; //case 0xFF18E7: Serial.println("2"); break; case 0xFF30CF: Serial.println("1"); curIRstate = 1; break; case 0xFF18E7: Serial.println("2"); curIRstate = 2; break; case 0xFF7A85: Serial.println("3"); break; //case 0xFF10EF: Serial.println("4"); break; //case 0xFF38C7: Serial.println("5"); break; //case 0xFF5AA5: Serial.println("6"); break; //case 0xFF42BD: Serial.println("7"); break; //case 0xFF4AB5: Serial.println("8"); break; //case 0xFF52AD: Serial.println("9"); break; case 0xFFFFFFFF: Serial.println(" REPEAT");break; default: Serial.println(" unmatched button "); }// End Case delay(500); // Do not get immediate repeat //delay(1500); // Do not get immediate repeat } //END translateIR void setup() /*----( SETUP: RUNS ONCE )----*/ { servoA.attach(8); // attaches the servo (pin) to the servo object //servoA.attach(13); Serial.begin(9600); Serial.println("IR Receiver Button Decode"); irrecv.enableIRIn(); // Start the receiver }/*--(end setup )---*/ void loop() /*----( LOOP: RUNS CONSTANTLY )----*/ { if (irrecv.decode(&results)) // have we received an IR signal? { translateIR(); irrecv.resume(); // receive the next value //begin inserted servo stuff if (curIRstate == 1 && curIRstate != lastIRstate) { for (pos = 40; pos <= 160; pos += 1) { // in steps of 1 degree servoA.write(pos); // tell servo to go to position in variable 'pos' SoftwareServo::refresh(); delay(15);} // waits 15ms for the servo to reach the position //} else { } if (curIRstate == 2 && curIRstate != lastIRstate) { for (pos = 160; pos >= 40; pos -= 1) { servoA.write(pos); SoftwareServo::refresh(); delay(15);} } lastIRstate = curIRstate; //end inserted servo stuff } }/* --(end main loop )-- */