martes, 5 de noviembre de 2013

Hacer sonar una melodía con Arduino

Buenas a todos, hoy les traemos después de un tiempo sin actualizar un sencillo tutorial sobre arduino que sale en el libro de ejemplos. Tras un período en el que hemos estado un poco ocupados volvemos a jugar con la placa arduino, y esta vez os enseñamos cómo hacer funcionar una melodía con la placa. Para llevarlo acabo necesitaremos un elemento piezoeléctrico, los cables de conexiones y el programa.


Los distintos elementos los colocaremos de la siguiente manera:





El código que hemos de ejecutar es el siguiente:


int speakerPin = 9;

int length = 15; // the number of notes
char notes[] = “ccggaagffeeddc “; // a space represents a rest
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

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);
    }
  }
}
void setup() {
  pinMode(speakerPin, OUTPUT);
}
void loop() {
  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);
  }
}

El resultado será el siguiente:



Iremos haciendo más y más tutoriales, ¡estar atentos!

No hay comentarios:

Publicar un comentario