// IRremote - Version: Latest
#include <IRremote.h>
#include <IRremoteInt.h>
int redLED = 3;
int yellowLED = 4;
int blueLED = 5;
int speakerPin = 9;
// the calculation of the tones is made following the mathematical operation:
// > timeHigh = period / 2 = 1 / (2 * toneFrequency)
// where the different tones are described as in the table:
//note frequency period timeHigh
/*
c 261 Hz 3830 1915
d 294 Hz 3400 1700
e 329 Hz 3038 1519
f 349 Hz 2864 1432
g 392 Hz 2550 1275
a 440 Hz 2272 1136
b 493 Hz 2028 1014
C 523 Hz 1912 956
*/
int length = 8; // the number of notes
char notes[] = "cdefgabC "; // a space represents a rest
int beats[] = { 1 };
int tempo = 300;
int receiver = 11; // Signal Pin of IR receiver to Arduino Digital Pin 11
/*-----( Declare objects )-----*/
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results; // create instance of 'decode_results'
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600);
Serial.println("IR Receiver Button Decode");
irrecv.enableIRIn(); // Start the receiver
pinMode(speakerPin, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(blueLED, OUTPUT);
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
if (irrecv.decode(&results)) // have we received an IR signal?
{
Serial.println(results.value); // > here you get the integer from your Remote
// use an Decimal to Hexadecimal Converter to get the Hex like this: http://www.binaryhexconverter.com/decimal-to-hex-converter
// add your Mapping in the function translateIR > check the two examples with Power and number 5-Button
translateIR();
irrecv.resume(); // receive the next value
}
}/* --(end main loop )-- */
/*-----( Function )-----*/
void translateIR() // takes action based on IR code received
// describing Remote IR codes
{
switch(results.value)
{
case 0xFFA25D: Serial.println("POWER Elegoo"); break; // 16753245 Elegoo
case 0xE0E040BF: Serial.println("POWER Samsung"); break; // 3772793023 Samsung
case 0xD5AD0B51: Serial.println("POWER Technics"); break; // 3584887633 Technics
case 0xA0C: Serial.println("POWER TechniSat"); break; // TechniSat
case 0xFFE21D: Serial.println("FUNC/STOP"); break; // 16769565 Elegoo
case 0xFF629D: Serial.println("VOL+"); break; // 16736925 Elegoo
case 0xFF22DD: Serial.println("FAST BACK"); break; // 16720605 Elegoo
case 0xFF02FD: Serial.println("PAUSE"); break; // 16712445
case 0xFFC23D: Serial.println("FAST FORWARD"); 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 0x200: Serial.println("0 TechniSat"); break; // TechniSat
case 0xA00: Serial.println("0 TechniSat"); break; // TechniSat
case 0xFF30CF: Serial.println("1");
playNote(notes[1], 1 * tempo);
digitalWrite(redLED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(redLED, LOW); // turn the LED off by making the voltage LOW
/* for (int i = 0; i < length; i++) {
if (notes[i] == ' ') {
delay(beats[i] * tempo); // rest
} else {
playNote(notes[i], beats[i] * tempo);
}
// pause between notes
delay(tempo / 2);
}
*/
break;
case 0x201: Serial.println("1 TechniSat"); break; // TechniSat
case 0xA01: Serial.println("1 TechniSat"); break; // TechniSat
case 0xFF18E7: Serial.println("2");
playNote(notes[2], 1 * tempo);
digitalWrite(yellowLED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(yellowLED, LOW); // turn the LED off by making the voltage LOW
break;
case 0x202: Serial.println("2 TechniSat"); break; // TechniSat
case 0xA02: Serial.println("2 TechniSat"); break; // TechniSat
case 0xFF7A85: Serial.println("3");
playNote(notes[3], 1 * tempo);
digitalWrite(blueLED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(blueLED, LOW); // turn the LED off by making the voltage LOW
break;
case 0x203: Serial.println("3 TechniSat"); break; // TechniSat
case 0xA03: Serial.println("3 TechniSat"); break; // TechniSat
case 0xFF10EF: Serial.println("4"); break;
case 0x204: Serial.println("4 TechniSat"); break; // TechniSat
case 0xA04: Serial.println("4 TechniSat"); break; // TechniSat
case 0xFF38C7: Serial.println("5 Elegoo"); break; // 16726215 Elegoo
case 0xE0E0906F: Serial.println("5 Samsung"); break; // 3772813423 Samsung
case 0xB1CE824B: Serial.println("5 Technics"); break; // 2983101003 Technics
case 0x205: Serial.println("5 TechniSat"); break; // TechniSat
case 0xA05: Serial.println("5 TechniSat"); break; // TechniSat
case 0xFF5AA5: Serial.println("6"); break;
case 0x206: Serial.println("6 TechniSat"); break; // TechniSat
case 0xA06: Serial.println("6 TechniSat"); break; // TechniSat
case 0xFF42BD: Serial.println("7"); break;
case 0x207: Serial.println("7 TechniSat"); break; // TechniSat
case 0xA07: Serial.println("7 TechniSat"); break; // TechniSat
case 0xFF4AB5: Serial.println("8"); break;
case 0x208: Serial.println("8 TechniSat"); break; // TechniSat
case 0xA08: Serial.println("8 TechniSat"); break; // TechniSat
case 0xFF52AD: Serial.println("9"); break;
case 0x209: Serial.println("9 TechniSat"); break; // TechniSat
case 0xA09: Serial.println("9 TechniSat"); break; // TechniSat
case 0xFFFFFFFF: Serial.println(" REPEAT");break;
default:
Serial.println(" other button ");
}// End Case
delay(500); // Do not get immediate repeat
} //END translateIR
void playTone(int tone, int duration) {
for (long i = 0; i < duration * 1000L; i += tone * 2) {
digitalWrite(speakerPin, HIGH);
delayMicroseconds(tone);
digitalWrite(speakerPin, LOW);
delayMicroseconds(tone);
}
}
void playNote(char note, int duration) {
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
// play the tone corresponding to the note name
for (int i = 0; i < 8; i++) {
if (names[i] == note) {
playTone(tones[i], duration);
}
}
}