Prendi spunto dal mio progetto:
/*
Interactive digital frame game
By Andrea Esposito
Site: blackstufflabs.com
For: The Fritzmas challenge - http://fritzing.org
9/12/2011
NN = FFFFFFFF = 4294967295
Remote control A:
KEY - HEX - INT
1 - FF32CD - 16724685
2 - FF708F - 16740495
3 - FFB24D - 16757325
4 - FFF20D - 16773645
5 - FF728D - 16741005
6 - FFD02F - 16764975
7 - FF52AD - 16732845
8 - FF12ED - 16716525
9 - FF50AF - 16732335
0 - FFB04F - 16756815
Remote control B
KEY - HEX - INT
next - 80579867 - 2153224295
power - 805728D7 - 2153195735
Answers:
Level - Key
Level 0 - 111
Level 1 - 666
Level 2 - 011
Level 3 - 945
Level 4 - 314
Level 5 - 975
Level 6 - 328
Level 7 - 101
Level 8 - 161
Level 9 - 100
Level 10 - 210
*/
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
IRsend irsend;
decode_results results;
short level=0;
short count=0;
#define isdigit(n) (n >= '0' && n <= '9')
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(12, OUTPUT); // IR GREEN
pinMode(7, OUTPUT); // IR RED
pinMode(4, OUTPUT); // 1 red
pinMode(5, OUTPUT); // 2 red
pinMode(6, OUTPUT); // 3 red
tone1.begin(8);
irrecv.enableIRIn();
Serial.println ("blackstufflabs.com");
}
void loop() {
digitalWrite(12, HIGH);
if (irrecv.decode(&results)) {
if (results.value != 4294967295){
Serial.print("Level: ");
Serial.println(level);
Serial.print("Code: ");
Serial.println(results.value);
digitalWrite(12, LOW);
digitalWrite(7, HIGH); // set the LED on
delay(100); // wait for a second
digitalWrite(7, LOW); // set the LED off
delay(100);
digitalWrite(12, HIGH);
game(results.value);
}
if (level != 0 ) irrecv.enableIRIn();
irrecv.resume(); // Receive the next value
}
delay (200);
}
void game (unsigned long int code)
{
switch (level)
{
case 0:
if ((code == 16724685) && (count == 2)) {
digitalWrite(4, HIGH);
count++;
}
if ((code == 16724685) && (count == 1)) {
digitalWrite(5, HIGH);
count++;
}
if ((code == 16724685) && (count == 0)) {
digitalWrite(6, HIGH);
count++;
}
if (count == 3)
{
Serial.println("Level done!");
count=0;
level++;
blinky();
play_rtttl(next);
irsend.sendNEC(0x80579867, 32);
}
break;
case 1:
if ((code == 16764975) && (count == 2)) {
digitalWrite(4, HIGH);
count++;
}
if ((code == 16764975) && (count == 1)) {
digitalWrite(5, HIGH);
count++;
}
if ((code == 16764975) && (count == 0)) {
digitalWrite(6, HIGH);
count++;
}
if (count == 3)
{
Serial.println("Level done!");
count=0;
level++;
blinky();
play_rtttl(next);
irsend.sendNEC(0x80579867, 32);
}
break;
case 2:
if ((code == 16724685) && (count == 2)) {
digitalWrite(4, HIGH);
count++;
}
if ((code == 16724685) && (count == 1)) {
digitalWrite(5, HIGH);
count++;
}
if ((code == 16756815) && (count == 0)) {
digitalWrite(6, HIGH);
count++;
}
if (count == 3)
{
Serial.println("Level done!");
count=0;
level++;
blinky();
play_rtttl(next);
irsend.sendNEC(0x80579867, 32);
}
break;
case 3:
if ((code == 16741005) && (count == 2)) {
digitalWrite(4, HIGH);
count++;
}
if ((code == 16773645) && (count == 1)) {
digitalWrite(5, HIGH);
count++;
}
if ((code == 16732335) && (count == 0)) {
digitalWrite(6, HIGH);
count++;
}
if (count == 3)
{
Serial.println("Level done!");
count=0;
level++;
blinky();
play_rtttl(next);
irsend.sendNEC(0x80579867, 32);
}
break;
case 4:
if ((code == 16773645) && (count == 2)) {
digitalWrite(4, HIGH);
count++;
}
if ((code == 16724685) && (count == 1)) {
digitalWrite(5, HIGH);
count++;
}
if ((code == 16757325) && (count == 0)) {
digitalWrite(6, HIGH);
count++;
}
if (count == 3)
{
Serial.println("Level done!");
count=0;
level++;
blinky();
play_rtttl(next);
irsend.sendNEC(0x80579867, 32);
}
break;
case 5:
if ((code == 16741005) && (count == 2)) {
digitalWrite(4, HIGH);
count++;
}
if ((code == 16732845) && (count == 1)) {
digitalWrite(5, HIGH);
count++;
}
if ((code == 16732335) && (count == 0)) {
digitalWrite(6, HIGH);
count++;
}
if (count == 3)
{
Serial.println("Level done!");
count=0;
level++;
blinky();
play_rtttl(next);
irsend.sendNEC(0x80579867, 32);
}
break;
case 6:
if ((code == 16716525) && (count == 2)) {
digitalWrite(4, HIGH);
count++;
}
if ((code == 16740495) && (count == 1)) {
digitalWrite(5, HIGH);
count++;
}
if ((code == 16757325) && (count == 0)) {
digitalWrite(6, HIGH);
count++;
}
if (count == 3)
{
Serial.println("Level done!");
count=0;
level++;
blinky();
play_rtttl(next);
irsend.sendNEC(0x80579867, 32);
}
break;
case 7:
if ((code == 16724685) && (count == 2)) {
digitalWrite(4, HIGH);
count++;
}
if ((code == 16756815) && (count == 1)) {
digitalWrite(5, HIGH);
count++;
}
if ((code == 16724685) && (count == 0)) {
digitalWrite(6, HIGH);
count++;
}
if (count == 3)
{
Serial.println("Level done!");
count=0;
level++;
blinky();
play_rtttl(next);
irsend.sendNEC(0x80579867, 32);
}
break;
case 8:
if ((code == 16724685) && (count == 2)) {
digitalWrite(4, HIGH);
count++;
}
if ((code == 16764975) && (count == 1)) {
digitalWrite(5, HIGH);
count++;
}
if ((code == 16724685) && (count == 0)) {
digitalWrite(6, HIGH);
count++;
}
if (count == 3)
{
Serial.println("Level done!");
count=0;
level++;
blinky();
play_rtttl(next);
irsend.sendNEC(0x80579867, 32);
}
break;
case 9:
if ((code == 16756815) && (count == 2)) {
digitalWrite(4, HIGH);
count++;
}
if ((code == 16756815) && (count == 1)) {
digitalWrite(5, HIGH);
count++;
}
if ((code == 16724685) && (count == 0)) {
digitalWrite(6, HIGH);
count++;
}
if (count == 3)
{
Serial.println("Level done!");
count=0;
level++;
blinky();
play_rtttl(next);
irsend.sendNEC(0x80579867, 32);
}
break;
case 10:
if ((code == 16756815) && (count == 2)) {
digitalWrite(4, HIGH);
count++;
}
if ((code == 16724685) && (count == 1)) {
digitalWrite(5, HIGH);
count++;
}
if ((code == 16740495) && (count == 0)) {
digitalWrite(6, HIGH);
count++;
}
if (count == 3)
{
Serial.println("THE END");
count=0;
level=0;
irsend.sendNEC(0x80579867, 32);
blinky();
play_rtttl(ending);
Serial.println("Done.");
blinky();
//song
Serial.println("Closing digital frame...");
irsend.sendNEC(0x805728D7, 32);
Serial.println("Bye bye!!!");
Serial.println ("blackstufflabs.com");
}
break;
default:
break;
}
}
void blinky()
{
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
delay(300);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(300);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
delay(300);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(300);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
delay(300);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(300);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
delay(300);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(300);
}