miércoles, 27 de septiembre de 2017

El baile de los pajaritos con un Arduino (Cancion)

Esta vez os traigo el baile de los pajaritos, de Maria Jesus y su Acordeon, hecho con un arduino. En esta ocasion, el codigo ha sido hecho por mi completamente, a partir de la partitura de la cancion. Espero que os guste:


Partitura:



Enlace para descargar el codigo: https://drive.google.com/drive/folders/0B20kHfrc3NnpUXpLNjgxa3hVLXM?usp=sharing

Nota: conectar el zumbador al Pin 2 del Arduino

CODIGO:

/*
//////////////////////////////////////////////////////////////////////////////////////////////
//    AUTOR: Marcos Gonzalez Perez                                             Septiembre/2017
//////////////////////////////////////////////////////////////////////////////////////////////
//    PROGRAMA: Notas musicales                                             VERSION: 1.0
//    DISPOSITIVO: ATMEGA328P                                               COMPILADOR: AVR
//    Entorno IDE: 1.6.0                                                    SIMULADOR:
//    TARJETA DE APLICACION: ARDUINO UNO                                    DEBUGGER:
//////////////////////////////////////////////////////////////////////////////////////////////
Programa que hace una la cancion de los pajaritos
https://www.youtube.com/watch?v=CgYD3ChlVMA

//////////////////////////////////////////////////////////////////////////////////////////////
*/
//////////////////////////////////////////////////////////////////////////////////////////////
// LIBRERIAS /////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES ////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////
// FUNCIONES /////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////
// CONFIGURACION /////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////

//Notas en clave de Sol:
const int Do = 261;
//Do sostenido o re bemol
const int DoS = 277;
const int ReB = 277;
const int Re = 294;
//Re sostenido o Mi bemol
const int ReS = 311;
const int MiB = 311;
const int Mi = 329;

const int Fa = 349;
//Fa sostenido o Sol bemol
const int FaS = 370;
const int SolB = 370;
const int Sol = 392;
//Sol soltenido o La bemol
const int SolS = 415;
const int LaB = 415;
const int La = 440;
//La sostenido o Si Bemol
const int LaS = 466;
const int SiB = 466;
const int Si = 493;
//Do agudo
const int DO = 522;
const int RE = 587;
const int MI = 659;


#define Redonda  4000
#define Blanca 2000
#define Negra 1000
#define Corchea 500
#define Semicorchea 250
#define Fusa 125
#define Semifusa 62.5
//Nota: el punto equivale a la mitad del tiempo de la nota (la nota vale 1.5 veces su tiempo normal)
#define Punto 1.5

const int buzzerPin = 2;

void setup() {
pinMode(buzzerPin, OUTPUT);

}


//////////////////////////////////////////////////////////////////////////////////////////////
//PRINCIPAL///////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////

//Partitura: Chicken Dance: http://www.freesheetmusic.net/folktunes1/ChickenDance.pdf

void loop() {
  for(int x=0; x<2; x++){ //repeticion de todo
  for(int y=0; y<2; y++){ //repeticion parte 1
  //linea 1
  tone(buzzerPin, Sol, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Sol, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, La, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, La, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Mi, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Mi, Semicorchea-10);
  delay(Semicorchea);

  tone(buzzerPin, Sol, Corchea-10);
  delay(Corchea);
  tone(buzzerPin, Sol, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Sol, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, La, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, La, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Mi, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Mi, Semicorchea-10);
  delay(Semicorchea);

  tone(buzzerPin, Sol, Corchea-10);
  delay(Corchea);
  tone(buzzerPin, Sol, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Sol, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, La, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, La, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, DO, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, DO, Semicorchea-10);
  delay(Semicorchea);

  tone(buzzerPin, Si, Corchea-10);
  delay(Corchea);
  //silencio de corchea
  delay(Corchea);
  //silencio de negra
  delay(Negra);

  //silencio de corchea
  delay(Corchea);
  tone(buzzerPin, Fa, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Fa, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Sol, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Sol, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Re, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Re, Semicorchea-10);
  delay(Semicorchea);

  //Linea 2
  tone(buzzerPin, Fa, Corchea-10);
  delay(Corchea);
  tone(buzzerPin, Fa, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Fa, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Sol, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Sol, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Re, Semicorchea-10);
  delay(Semicorchea);
  tone(buzzerPin, Re, Semicorchea-10);
  delay(Semicorchea);

  /////////////////////////////////////////////////////////////
  if (x==0){
    tone(buzzerPin, Fa, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, Fa, Semicorchea-10);
    delay(Semicorchea);
    tone(buzzerPin, Fa, Semicorchea-10);
    delay(Semicorchea);
    tone(buzzerPin, Sol, Semicorchea-10);
    delay(Semicorchea);
    tone(buzzerPin, Sol, Semicorchea-10);
    delay(Semicorchea);
    tone(buzzerPin, Si, Semicorchea-10);
    delay(Semicorchea);
    tone(buzzerPin, Si, Semicorchea-10);
    delay(Semicorchea);
 
    tone(buzzerPin, La, Corchea-10);
    delay(Corchea);
    //silencio de corchea
    delay(Corchea);
    //silencio de negra
    delay(Negra);
    //silencio de corchea
    delay(Corchea);
  }
  }

  if (x==1){
    tone(buzzerPin, Mi, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, Fa, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, Sol, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, La, Corchea-10);
    delay(Corchea);
 
    tone(buzzerPin, Si, Blanca+Corchea-10);
    delay(Blanca+Corchea);
  }

    tone(buzzerPin, Sol, Semicorchea-10);
    delay(Semicorchea);
    tone(buzzerPin, SolB, Semicorchea-10);
    delay(Semicorchea);
    tone(buzzerPin, Mi, Semicorchea-10);
    delay(Semicorchea);
 
    //Linea 3
    tone(buzzerPin, Mi, Negra*Punto-10);
    delay(Negra*Punto);
    tone(buzzerPin, Sol, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, MI, Negra*Punto-10);
    delay(Negra*Punto);
    tone(buzzerPin, RE, Corchea-10);
    delay(Corchea);
 
    tone(buzzerPin, RE, Negra-10);
    delay(Negra);
    tone(buzzerPin, DO, Negra+Corchea-10);
    delay(Negra+Corchea);
    tone(buzzerPin, Sol, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, SolB, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, Fa, Corchea-10);
    delay(Corchea);
 
    tone(buzzerPin, Mi, Negra*Punto-10);
    delay(Negra*Punto);
    tone(buzzerPin, Sol, Corchea-10);
    delay(Corchea);
 
    tone(buzzerPin, RE, Negra*Punto-10);
    delay(Negra*Punto);
    tone(buzzerPin, DO, Corchea-10);
    delay(Corchea);
 
    tone(buzzerPin, Si, Blanca+Corchea-10);
    delay(Blanca+Corchea);
    tone(buzzerPin, Sol, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, Sol, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, SolB, Corchea-10);
    delay(Corchea);
 
    //Linea 4
    tone(buzzerPin, Fa, Negra*Punto-10);
    delay(Negra*Punto);
    tone(buzzerPin, Sol, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, RE, Negra*Punto-10);
    delay(Negra*Punto);
    tone(buzzerPin, DO, Corchea-10);
    delay(Corchea);
 
    tone(buzzerPin, DO, Negra-10);
    delay(Negra);
    tone(buzzerPin, Si, Negra+Corchea-10);
    delay(Negra+Corchea);
    tone(buzzerPin, RE, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, RE, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, DO, Corchea-10);
    delay(Corchea);
 
    tone(buzzerPin, DO, Negra-10);
    delay(Negra);
    tone(buzzerPin, Si, Negra+Corchea-10);
    delay(Negra+Corchea);
 
    tone(buzzerPin, Si, Corchea-10);
    delay(Negra);
    tone(buzzerPin, DO, Corchea-10);
    delay(Corchea);
    tone(buzzerPin, RE, Corchea-10);
    delay(Corchea);
 
    tone(buzzerPin, DO, Blanca+Corchea-10);
    delay(Blanca+Corchea);
 
  }


noTone(buzzerPin);
delay(5000);

}