Interactive digital frame

In questi giorni è in corso un contest sul sito del famoso programma “Fritzing”: http://fritzing.org/news/the-fritzmas-challenge-send-in-your-projects/

Non ho MAI partecipato in vita mia ad un contest su internet… ho notato che vanno molto di moda.
Ma la maggior parte si tratta di contest “pro spamming”: vinci se pubblicizzi il loro sito o partecipi assiduamente alle loro iniziative.
Questi tipi di contest non mi piacciono per niente, anzi… preferisco quelli un pò più costruttivi: vinci se hai realizzato un buon progetto.
Fritzing mi ha allettato.

Così mi sono sforzato un pochino e ho realizzato questa cosetta molto semplice ma carina (credo).

In cosa consiste?
Brevemente: ho una cornice digitale con 10 immagini, ogni immagine “racconta” un numero… bisogna indovinare il numero per andare avanti nel gioco.
Ogni immagine è un livello…
Così ho caricato un pò di immagini che raccontassero di un numero: pigreco, sezione aurea, il numero del diavolo e cazzatelle varie.
La cornice digitale non l’ho modificata per niente, nel senso che non ho fatto saldature o aperta: è rimasta intatta.

Come faccio a cambiare immagine per poi andare avanti con i livelli?
Ho usato un pò di led IR. Una tecnologia un pò di cacca.
Ho usato il telecomando della mia TV per inserire il numero misterioso, ho dovuto codificare tutti i tasti per capire che codice corrisponde ad ogni tasto.

Tutto questo grazie alla splendida libreria IRremote.h fornita da: http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html

Ho usato un IR ricevitore su pcb preso da un vecchio lettore divx con già presaldati resistenze e condensatori, un led ir preso da un vecchio telecomando, 3 led rossi e un buzzer.

Ho collegato la pcb del ricevitore ad arduino e il led ir l’ho ficcato nel buchetto del ir receiver della cornice digitale (niente saldature giuro) per tenerlo fermo e per non fare brutte figure durante il video.

Il tre led rossi indicano se la sequenza dei numeri immessi è corretta, ogni led indica: primo, secondo e terzo numero della sequenza corretta immessa.

Se la sequenza o il numero immesso con il telecomando è errata non avviene nulla: hai sbagliato quindi non vai avanti di livello.

Il buzzer mi è servito per fare un pò “scena”, ho messo qualche canzoncina presa dal google e ho usato la libreria tone.h presa da (mi pare): http://code.google.com/p/rogue-code/

Probabilmente un video può aiutare meglio a capire che cavolo ho combinato.

Vi posto un pò di materiale:

capture

 

/*
Interactive digital frame game
 By Andrea Esposito
 Site: blackstufflabs.com
 
 For: The Fritzmas challenge - http://fritzing.org
 
 13/12/2011
 
 IRremote.h from: http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
 Tone.h & RTTL function from: http://code.google.com/p/rogue-code/
 IR Led wiring from: http://www.ladyada.net/make/tvbgone/design.html
 IR Receiver pcb taked from an old divx player
 
 
 NN = FFFFFFFF = 4294967295
 
 TV Remote control: 
 Button - 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
 
 Digital Frame remote control:
 Button   - HEX      - INT 
 next  - 80579867 - 2153224295
 power - 805728D7 - 2153195735 
 
 Answers:
 Level    - sequence
 
 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>
#include <Tone.h>

#define button_0 16756815
#define button_1 16724685
#define button_2 16740495
#define button_3 16757325
#define button_4 16773645
#define button_5 16741005
#define button_6 16764975
#define button_7 16732845
#define button_8 16716525
#define button_9 16732335

#define button_power 0x805728D7 
#define button_next  0x80579867

#define NN 4294967295

Tone tone1;

#define OCTAVE_OFFSET 0
//char *song = "WeWishYou:d=4,o=5,b=200:d,g,8g,8a,8g,8f#,e,e,e,a,8a,8b,8a,8g,f#,d,d,b,8b,8c6,8b,8a,g,e,d,e,a,f#,2g,d,g,8g,8a,8g,8f#,e,e,e,a,8a,8b,8a,8g,f#,d,d,b,8b,8c6,8b,8a,g,e,d,e,a,f#,1g,d,g,g,g,2f#,f#,g,f#,e,2d,a,b,8a,8a,8g,8g,d6,d,d,e,a,f#,2g"; 
char *ending = "WeWishYou:d=4,o=5,b=200:d,g,8g,8a,8g,8f#,e,e,e,a,8a,8b,8a,8g,f#,d,d,b"; 

char *next = "TakeOnMe:d=4,o=4,b=160:8f#5,8f#5,8f#5,8d5,8p"; 

char *wrong = "StarWars:d=4,o=5,b=45:32p,32f#,32f#";

int notes[] = {
  0,
  NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4,
  NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5, NOTE_F5, NOTE_FS5, NOTE_G5, NOTE_GS5, NOTE_A5, NOTE_AS5, NOTE_B5,
  NOTE_C6, NOTE_CS6, NOTE_D6, NOTE_DS6, NOTE_E6, NOTE_F6, NOTE_FS6, NOTE_G6, NOTE_GS6, NOTE_A6, NOTE_AS6, NOTE_B6,
  NOTE_C7, NOTE_CS7, NOTE_D7, NOTE_DS7, NOTE_E7, NOTE_F7, NOTE_FS7, NOTE_G7, NOTE_GS7, NOTE_A7, NOTE_AS7, NOTE_B7
};

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);  //buzzer on pin 8
  irrecv.enableIRIn();
  Serial.println ("blackstufflabs.com");
}

void loop() {
  digitalWrite(12, HIGH);
  if (irrecv.decode(&results))  {
    if (results.value != NN){
      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 == button_1) && (count == 2)) {
      digitalWrite(4, HIGH);
      count++;
    }
    if ((code == button_1) && (count == 1)) {
      digitalWrite(5, HIGH);
      count++;
    }
    if ((code == button_1) && (count == 0)) {
      digitalWrite(6, HIGH);
      count++;
    }  
    if (count == 3)
    {
      Serial.println("Level done!");
      count=0;
      level++;
      blinky();
      play_rtttl(next);
      irsend.sendNEC(button_next, 32);
    }  
    break; 

  case 1:
    if ((code == button_6) && (count == 2)) {
      digitalWrite(4, HIGH);
      count++;
    }
    if ((code == button_6) && (count == 1)) {
      digitalWrite(5, HIGH);
      count++;
    }
    if ((code == button_6) && (count == 0)) {
      digitalWrite(6, HIGH);
      count++;
    }
    if (count == 3)
    {
      Serial.println("Level done!");
      count=0;
      level++;
      blinky();
      play_rtttl(next);
      irsend.sendNEC(button_next, 32);

    }  
    break; 

  case 2:
    if ((code == button_1) && (count == 2)) {
      digitalWrite(4, HIGH);
      count++;
    }
    if ((code == button_1) && (count == 1)) {
      digitalWrite(5, HIGH);
      count++;
    }
    if ((code == button_0) && (count == 0)) {
      digitalWrite(6, HIGH);
      count++;
    }
    if (count == 3)
    {
      Serial.println("Level done!");
      count=0;
      level++;
      blinky();
      play_rtttl(next);
      irsend.sendNEC(button_next, 32);

    }  

    break; 

  case 3:
    if ((code == button_5) && (count == 2)) {
      digitalWrite(4, HIGH);
      count++;
    }
    if ((code == button_4) && (count == 1)) {
      digitalWrite(5, HIGH);
      count++;
    }
    if ((code == button_9) && (count == 0)) {
      digitalWrite(6, HIGH);
      count++;
    }
    if (count == 3)
    {
      Serial.println("Level done!");
      count=0;
      level++;
      blinky();
      play_rtttl(next);
      irsend.sendNEC(button_next, 32);
    }  
    break; 

  case 4:
    if ((code == button_4) && (count == 2)) {
      digitalWrite(4, HIGH);
      count++;
    }
    if ((code == button_1) && (count == 1)) {
      digitalWrite(5, HIGH);
      count++;
    }
    if ((code == button_3) && (count == 0)) {
      digitalWrite(6, HIGH);
      count++;
    }
    if (count == 3)
    {
      Serial.println("Level done!");
      count=0;
      level++;
      blinky();
      play_rtttl(next);
      irsend.sendNEC(button_next, 32);
    }
    break; 

  case 5:
    if ((code == button_5) && (count == 2)) {
      digitalWrite(4, HIGH);
      count++;
    }
    if ((code == button_7) && (count == 1)) {
      digitalWrite(5, HIGH);
      count++;
    }
    if ((code == button_9) && (count == 0)) {
      digitalWrite(6, HIGH);
      count++;
    }
    if (count == 3)
    {
      Serial.println("Level done!");
      count=0;
      level++;
      blinky();
      play_rtttl(next);
      irsend.sendNEC(button_next, 32);
    }
    break; 

  case 6:
    if ((code == button_8) && (count == 2)) {
      digitalWrite(4, HIGH);
      count++;
    }
    if ((code == button_2) && (count == 1)) {
      digitalWrite(5, HIGH);
      count++;
    }
    if ((code == button_3) && (count == 0)) {
      digitalWrite(6, HIGH);
      count++;
    }
    if (count == 3)
    {
      Serial.println("Level done!");
      count=0;
      level++;
      blinky();
      play_rtttl(next);
      irsend.sendNEC(button_next, 32);
    }
    break; 

  case 7:
    if ((code == button_1) && (count == 2)) {
      digitalWrite(4, HIGH);
      count++;
    }
    if ((code == button_0) && (count == 1)) {
      digitalWrite(5, HIGH);
      count++;
    }
    if ((code == button_1) && (count == 0)) {
      digitalWrite(6, HIGH);
      count++;
    }
    if (count == 3)
    {
      Serial.println("Level done!");
      count=0;
      level++;
      blinky();
      play_rtttl(next);
      irsend.sendNEC(button_next, 32);
    }
    break; 

  case 8:
    if ((code == button_1) && (count == 2)) {
      digitalWrite(4, HIGH);
      count++;
    }
    if ((code == button_6) && (count == 1)) {
      digitalWrite(5, HIGH);
      count++;
    }
    if ((code == button_1) && (count == 0)) {
      digitalWrite(6, HIGH);
      count++;
    }
    if (count == 3)
    {
      Serial.println("Level done!");
      count=0;
      level++;
      blinky();
      play_rtttl(next);
      irsend.sendNEC(button_next, 32);
    }
    break; 

  case 9:
    if ((code == button_0) && (count == 2)) {
      digitalWrite(4, HIGH);
      count++;
    }
    if ((code == button_0) && (count == 1)) {
      digitalWrite(5, HIGH);
      count++;
    }
    if ((code == button_1) && (count == 0)) {
      digitalWrite(6, HIGH);
      count++;
    }
    if (count == 3)
    {
      Serial.println("Level done!");
      count=0;
      level++;
      blinky();
      play_rtttl(next);
      irsend.sendNEC(button_next, 32);
    }
    break; 

  case 10:
    if ((code == button_0) && (count == 2)) {
      digitalWrite(4, HIGH);
      count++;
    }
    if ((code == button_1) && (count == 1)) {
      digitalWrite(5, HIGH);
      count++;
    }
    if ((code == button_2) && (count == 0)) {
      digitalWrite(6, HIGH);
      count++;
    }
    if (count == 3)
    {
      Serial.println("THE END");
      count=0;
      level=0;
      irsend.sendNEC(button_next, 32);
      blinky();
      play_rtttl(ending);
      Serial.println("Done.");
      blinky();      
      //song
      Serial.println("Closing digital frame...");
      irsend.sendNEC(button_power, 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);
}

void play_rtttl(char *p)
{
  // Absolutely no error checking in here

  byte default_dur = 4;
  byte default_oct = 6;
  int bpm = 63;
  int num;
  long wholenote;
  long duration;
  byte note;
  byte scale;

  // format: d=N,o=N,b=NNN:
  // find the start (skip name, etc)

  while(*p != ':') p++;    // ignore name
  p++;                     // skip ':'

  // get default duration
  if(*p == 'd')
  {
    p++; 
    p++;              // skip "d="
    num = 0;
    while(isdigit(*p))
    {
      num = (num * 10) + (*p++ - '0');
    }
    if(num > 0) default_dur = num;
    p++;                   // skip comma
  }

  //Serial.print("ddur: "); Serial.println(default_dur, 10);

  // get default octave
  if(*p == 'o')
  {
    p++; 
    p++;              // skip "o="
    num = *p++ - '0';
    if(num >= 3 && num <=7) default_oct = num;
    p++;                   // skip comma
  }

  // Serial.print("doct: "); Serial.println(default_oct, 10);

  // get BPM
  if(*p == 'b')
  {
    p++; 
    p++;              // skip "b="
    num = 0;
    while(isdigit(*p))
    {
      num = (num * 10) + (*p++ - '0');
    }
    bpm = num;
    p++;                   // skip colon
  }

  // Serial.print("bpm: "); Serial.println(bpm, 10);

  // BPM usually expresses the number of quarter notes per minute
  wholenote = (60 * 1000L / bpm) * 4;  // this is the time for whole note (in milliseconds)

  // Serial.print("wn: "); Serial.println(wholenote, 10);

  // now begin note loop
  while(*p)
  {
    // first, get note duration, if available
    num = 0;
    while(isdigit(*p))
    {
      num = (num * 10) + (*p++ - '0');
    }

    if(num) duration = wholenote / num;
    else duration = wholenote / default_dur;  // we will need to check if we are a dotted note after

      // now get the note
    note = 0;

    switch(*p)
    {
    case 'c':
      note = 1;
      break;
    case 'd':
      note = 3;
      break;
    case 'e':
      note = 5;
      break;
    case 'f':
      note = 6;
      break;
    case 'g':
      note = 8;
      break;
    case 'a':
      note = 10;
      break;
    case 'b':
      note = 12;
      break;
    case 'p':
    default:
      note = 0;
    }
    p++;

    // now, get optional '#' sharp
    if(*p == '#')
    {
      note++;
      p++;
    }

    // now, get optional '.' dotted note
    if(*p == '.')
    {
      duration += duration/2;
      p++;
    }

    // now, get scale
    if(isdigit(*p))
    {
      scale = *p - '0';
      p++;
    }
    else
    {
      scale = default_oct;
    }

    scale += OCTAVE_OFFSET;

    if(*p == ',')
      p++;       // skip comma for next note (or we may be at the end)

    // now play the note

    if(note)
    {
      /* Serial.print("Playing: ");
       Serial.print(scale, 10); Serial.print(' ');
       Serial.print(note, 10); Serial.print(" (");
       Serial.print(notes[(scale - 4) * 12 + note], 10);
       Serial.print(") ");
       Serial.println(duration, 10);*/
      tone1.play(notes[(scale - 4) * 12 + note]);
      delay(duration);
      tone1.stop();
    }
    else
    {
      /* Serial.print("Pausing: ");
       Serial.println(duration, 10);*/
      delay(duration);
    }
  }
}

3 pensieri su “Interactive digital frame

  1. Walter

    Complimenti!
    hai creato un interessante programmino che mi da lo spunto anche per altre applicazioni.
    Vorrei utilizzare il telecomando tv come se fosse una tastiera analogica.
    Credo che in questo modo mi metterei ai riparo dal solito problema di debounce.
    Quando poi devo inserire tutto in una scatolina, è più facile creare un forellino per il sensore IR piuttosto che fare uno scavo per inserire la tastiera.
    Grazie ai tuoi esempi ho provato in più modi a risolvere il mio problema ma non ottengo il risultato sperato.
    Si tratta di questo,
    Vorrei poter inserire dei numeri tramite il telecomando IR (esempio inserisci ora) per poi gestirli come un normale input dati da tastiera.
    Sino a che si tratta di una singola cifra nessun problema, quando devo inserire un numero di 2 o più cifre, non riesco ad uscirne vivo!
    Hai qualche suggerimento da darmi?
    grazie infinite
    Walter

    Rispondi
  2. Walter

    grazie della veloce risposta!
    Basandomi su quanto hai fatto tu, ho scritto questo primo codice.
    Premendo un tasto del telecomando (button_11) entro nel blocco dove inserendo 2 numeri in successione mi restituisce un numero di 2 cifre. Questo almeno è quanto vorrei fare, mi riesce però soltanto la prima volta, successivamente il numero di 2 cifre si aggiorna sempre alla prima pressione del tasto del telecomando. Allego il tutto, risolto questo problema cercherò anche di rendere il codice più leggibile e anche meno lungo. GRAZIE ANCORA. Walter

    #include

    #define button_0 16726215
    #define button_1 16769055
    #define button_2 16754775
    #define button_3 16748655
    #define button_4 16738455
    #define button_5 16750695
    #define button_6 16756815
    #define button_7 16724175
    #define button_8 16718055
    #define button_9 16743045
    #define button_11 16732845

    #define NN 4294967295

    int RECV_PIN = 14;

    IRrecv irrecv(RECV_PIN);
    decode_results results;

    int level=0;
    short count=0; //short è uguale a int

    int TastoPremuto = 0;
    int Decina = 0;
    int Unita = 0;

    void setup()
    {
    Serial.begin(9600);
    irrecv.enableIRIn(); // Start the receiver
    }

    void loop()
    {
    if (irrecv.decode(&results))
    {
    if (results.value = button_11) //con questo tasto entro nella routine “inserisci numeri”
    {
    LeggiComando ();
    }
    }
    }

    void LeggiComando ()
    {
    if (irrecv.decode(&results))
    {
    if (results.value != NN)
    {
    Serial.print(“Level: “);
    Serial.println(level);
    Serial.print(“Code: “);
    Serial.println(results.value);
    Serial.print(“count: “);
    Serial.println(count);
    game(results.value);
    Serial.print(“Totale: “);
    Serial.println(Decina+Unita);
    }
    if (level != 0 ) irrecv.enableIRIn();
    irrecv.resume(); // Receive the next value

    }

    }

    void game (unsigned long int code)
    {
    switch (level)
    {
    case 0:
    if ((code == button_1) && (count == 0))
    {
    count++;
    TastoPremuto = 1;
    Decina = TastoPremuto * 10;
    Serial.print(“Decina: “);
    Serial.println(Decina);

    }
    if ((code == button_2) && (count == 0))
    {
    count++;
    TastoPremuto = 2;
    Decina = TastoPremuto * 10;
    Serial.print(“Decina: “);
    Serial.println(Decina);

    }
    if ((code == button_3) && (count == 0))
    {
    count++;
    TastoPremuto = 3;
    Decina = TastoPremuto * 10;
    Serial.print(“Decina: “);
    Serial.println(Decina);

    }
    if ((code == button_4) && (count == 0))
    {
    count++;
    TastoPremuto = 4;
    Decina = TastoPremuto * 10;
    Serial.print(“Decina: “);
    Serial.println(Decina);

    }
    if ((code == button_5) && (count == 0))
    {
    count++;
    TastoPremuto = 5;
    Decina = TastoPremuto * 10;
    Serial.print(“Decina: “);
    Serial.println(Decina);

    }
    if ((code == button_6) && (count == 0))
    {
    count++;
    TastoPremuto = 6;
    Decina = TastoPremuto * 10;
    Serial.print(“Decina: “);
    Serial.println(Decina);
    }
    if ((code == button_7) && (count == 0))
    {
    count++;
    TastoPremuto = 7;
    Decina = TastoPremuto * 10;
    Serial.print(“Decina: “);
    Serial.println(Decina);
    }
    if ((code == button_8) && (count == 0))
    {
    count++;
    TastoPremuto =8;
    Decina = TastoPremuto * 10;
    Serial.print(“Decina: “);
    Serial.println(Decina);
    }
    if ((code == button_9) && (count == 0))
    {
    count++;
    TastoPremuto = 9;
    Decina = TastoPremuto * 10;
    Serial.print(“Decina: “);
    Serial.println(Decina);
    }
    if ((code == button_0) && (count == 0))
    {
    count++;
    TastoPremuto = 0;
    Decina = TastoPremuto * 10;
    Serial.print(“Decina: “);
    Serial.println(Decina);
    }

    if (count == 1)
    {
    Serial.println(“Level done!”);
    count=0;
    level++;
    irrecv.resume();
    }
    break;

    case 1:
    if ((code == button_1) && (count == 0))
    {
    count++;
    TastoPremuto = 1;
    Unita = TastoPremuto ;
    Serial.print(“Unita: “);
    Serial.println(Unita);
    }
    if ((code == button_2) && (count == 0))
    {
    count++;
    TastoPremuto = 2;
    Unita = TastoPremuto ;
    Serial.print(“Unita: “);
    Serial.println(Unita);
    }
    if ((code == button_3) && (count == 0))
    {
    count++;
    TastoPremuto = 3;
    Unita = TastoPremuto ;
    Serial.print(“Unita: “);
    Serial.println(Unita);
    }
    if ((code == button_4) && (count == 0))
    {
    count++;
    TastoPremuto = 4;
    Unita = TastoPremuto ;
    Serial.print(“Unita: “);
    Serial.println(Unita);
    }
    if ((code == button_5) && (count == 0))
    {
    count++;
    TastoPremuto = 5;
    Unita = TastoPremuto ;
    Serial.print(“Unita: “);
    Serial.println(Unita);
    }
    if ((code == button_6) && (count == 0))
    {
    count++;
    TastoPremuto = 6;
    Unita = TastoPremuto ;
    Serial.print(“Unita: “);
    Serial.println(Unita);
    }
    if ((code == button_7) && (count == 0))
    {
    count++;
    TastoPremuto = 7;
    Unita = TastoPremuto ;
    Serial.print(“Unita: “);
    Serial.println(Unita);
    }
    if ((code == button_8) && (count == 0))
    {
    count++;
    TastoPremuto = 8;
    Unita = TastoPremuto ;
    Serial.print(“Unita: “);
    Serial.println(Unita);
    }
    if ((code == button_8) && (count == 0))
    {
    count++;
    TastoPremuto = 8;
    Unita = TastoPremuto ;
    Serial.print(“Unita: “);
    Serial.println(Unita);
    }
    if ((code == button_9) && (count == 0))
    {
    count++;
    TastoPremuto = 9;
    Unita = TastoPremuto ;
    Serial.print(“Unita: “);
    Serial.println(Unita);
    }
    if ((code == button_0) && (count == 0))
    {
    count++;
    TastoPremuto = 0;
    Unita = TastoPremuto ;
    Serial.print(“Unita: “);
    Serial.println(Unita);
    }

    if (count == 1)
    {
    //Serial.println(“Level done!”);
    count=0;
    level=0;
    irrecv.resume();
    }
    break;

    default:
    break;
    }
    }

    Rispondi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.