julio 1, 2017 admin

Hacker inside (edición navideña): Haz tus propias canciones para el árbol de navidad con Arduino y la función tone()

 

¿Cansado de esas desafinadas canciones navideñas que incluyen las luces de tu árbol de navidad? Ya puedes componer y remixear tus propios villancicos utilizando arduino.

Necesitaremos:
Arduino (yo utilicé el UNO, cualquiera sirve)
Arduino IDE (libre descarga de la página de arduino.cc)
Una bocina de 8 ohms (yo usé una de steren)

Algunos cables para conectar todo
Para alimentar el arduino puedes usar una batería de 9v y su respectivo clip o un eliminador.

 

Conexión

Nada complicado, el negativo de la bocina al GND y el positivo al pin (8 en mi caso).

 

Código y “partitura”

Intenté escribir un código más interesante que sencillamente cortar pegar: para ello hice mi propio código (que de seguro se puede mejorar muchísimo) utilicé la canción de Dragon Ball GT (LOL). Podemos revisar la referencia de la página de arduino sobre la función tone() 

La partitura la saqué de una versión de musescore:

captura-de-pantalla-2016-12-24-a-las-19-22-34

#include "pitches.h"  

//a continuación definimos las figuras

#define buzzer 8 // define el pin de la bocina
#define tempo 500 // en ms

#define negra tempo/1
#define corchea negra/2
#define semicorchea corchea/2
#define blanca negra*2
#define redonda negra*4

#define negradot negra+corchea
#define corcheadot corchea+semicorchea

void setup() {
  
}


void loop () {

  // primer compás
  tone(buzzer,C5,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,C5,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,A4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,AS4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,C5,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,D5,corchea); delay(corchea); noTone(buzzer);

// Segundo compás

  tone(buzzer,C5,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,AS4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,A4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,G4,negra); delay(negradot); noTone(buzzer);

// tercer compás

tone(buzzer,A4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,A4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,F4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,G4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,A4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,AS4,corchea); delay(corchea); noTone(buzzer);

// cuarto compás

  tone(buzzer,A4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,G4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,F4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,E4,negra); delay(negradot); noTone(buzzer);

  //quinto compás

  tone(buzzer,F4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,D4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,D4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,F4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,D5,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,C5,corchea); delay(corchea);

  //sexto compás

  tone(buzzer,C5,blanca); delay(blanca); noTone(buzzer);
  tone(buzzer,F4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,G4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,A4,corchea); delay(corchea); noTone(buzzer);

  //séptimo compás

  tone(buzzer,AS4,negra); delay(negra); noTone(buzzer);
  tone(buzzer,A4,negra); delay(negra); noTone(buzzer);
  tone(buzzer,G4,negra); delay(negra); noTone(buzzer);
  tone(buzzer,F4,negra); delay(negra); noTone(buzzer);

  //octavo compás

  tone(buzzer,A4,negradot); delay(negradot); noTone(buzzer);
  tone(buzzer,AS4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,G4,negradot); delay(blanca); noTone(buzzer);

    // noveno compás
  tone(buzzer,C5,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,C5,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,A4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,AS4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,C5,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,D5,corchea); delay(corchea); noTone(buzzer);

// décimo compás

  tone(buzzer,C5,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,AS4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,A4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,G4,negra); delay(negradot); noTone(buzzer);

// onceavo compás

tone(buzzer,A4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,A4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,F4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,G4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,A4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,AS4,corchea); delay(corchea); noTone(buzzer);

// doceavo compás

  tone(buzzer,A4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,G4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,F4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,E4,negra); delay(negradot); noTone(buzzer);

  //treceavo compás

  tone(buzzer,F4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,D4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,D4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,F4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,D5,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,C5,corchea); delay(corchea);

  //catorceavo compás

  tone(buzzer,C5,blanca); delay(blanca); noTone(buzzer);
  tone(buzzer,F4,corchea); delay(negra); noTone(buzzer);
  tone(buzzer,G4,corchea); delay(corchea); noTone(buzzer);
  tone(buzzer,A4,corchea); delay(corchea); noTone(buzzer);

  //quinceavo compás

  tone(buzzer,AS4,negra); delay(negra); noTone(buzzer);
  tone(buzzer,A4,negra); delay(negra); noTone(buzzer);
  tone(buzzer,G4,negra); delay(negra); noTone(buzzer);
  tone(buzzer,F4,negra); delay(negra); noTone(buzzer);

  //sieciceisavo compás

  tone(buzzer,G4,blanca); delay(blanca); noTone(buzzer);
  tone(buzzer,F4,negra); delay(negra); noTone(buzzer);
  tone(buzzer,E4,negra); delay(negra); noTone(buzzer);

  // final

tone(buzzer,F4,redonda); delay(redonda); noTone(buzzer);

delay(redonda);
   

}