sabato 19 ottobre 2013

Pianola con buzzer, telecomando infrarossi e arduino

Grazie all'aiuto del forum di Arduino sono riuscito a risolvere un problema durante la compilazione del mio sketch della pianola ad infrarossi.
Con il telecomado della mia tv con codifica RC5 posso riprodurre le 7 note su Arduino (si può usare qualsiasi telecomando, basta sostituire i codici!).
Ho collegato il sensore ad infrarossi TSOP4838 al pin 11 e il buzzer al pin 8.
I suono vengono riprodotti con la funzione tone().
La libreria IrRemote e tone() usano lo stesso timer e quindi ho spostato il timer 2 della IrRemote sul timer 1.
// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
#else
  #define IR_USE_TIMER1   // tx = pin 9
  //#define IR_USE_TIMER2     // tx = pin 3
#endif

Prima di tutto dovete aggiungere questa libreria, modificata da me.
Con la mia libreria modificata il led IR per trasmettere va connesso al pin 9.
Vediamo subito lo schema del circuito:
Lo sketch è il seguente:


/*
 * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

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

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
 if (results.value == 0x1) //do
 {
   tone(8,261,200); 
   
 }
  if (results.value == 0x2) //re
 {
   tone(8,293,200);
 }
 
  if (results.value == 0x3) //mi
 {
    tone(8,330,200);
 }
  if (results.value == 0x4) //fa
 {
  tone(8,349,200);
 }
  if (results.value == 0x5) //sol
 {
  tone(8,392,200);
 }
  if (results.value == 0x6) //la
 {
  tone(8,435,200);
 }
 if (results.value == 0x7) //si
 {
  tone(8,494,200);
 }
 
}
Lo Per fare suonare Arduino basta premere i tasti dal 1 a 7 con un telecomando Philips con codifica RC5.
Per cambiare i codici dei pulsanti basta che aprite il moditor seriale e sostituite i codici 0xcodice.
Foto

Video



ciao a tutti, e al prossimo articolo!





1 commento: