Ejercicio 12: Para la ruleta musical

Incluye una nota para cada luz en el ej. de para la ruleta y gana?.

Requisitos:

  • 4 LEDs, 4 resistencias de 220 ohmios.
  • Un pulsador, una resistencia de 1Kohmio.
  • Un zumbador piezoeléctrico.

Planteamiento: Una nota para cada color en nuestra ruleta.

Si juntamos el ejercicio escala musical? con el para la ruleta y gana? podemos incorporar música a nuestro juego.

Basta con definir un procedimiento, que hemos llamado nota() que reproduzca cada nota e insertarlo en el mismo lugar en el que encendemos cada LED. Para sincronizar cada color con una nota usamos una cadena de forma que la variable que la recorre es la misma para los LEDs y las notas.

VIDEO DEL EJERCICIO 12

VIDEO DEL EJERCICIO 12 (versión para el montaje del SIMON)

CODIGO FUENTE

 Copyright (C) 2006  Juan Carlos Alonso de Mena
 This program is free software; you can redistribute it and/or modify it under the terms
 of the GNU General Public License as published by the Free Software Foundation;
 See the GNU General Public License for more details?

 int cadenaLeds[]={6,7,8,9};
 int notas[] = {1915, 1519, 1275, 956};    //cadena que guarda los tiempos de pulso de cada nota
 int zumb=10;
 int puls=5;
 int tiempo=100;                           //variable que establece la duración de cada nota
 int n=0;
 int m=0;
 void setup (){
   for(n=0;n<4;n++){
     pinMode(cadenaLeds[n],OUTPUT);
   }
   pinMode(puls,INPUT);
   pinMode(zumb,OUTPUT); 
 }
 void nota(){                           //procedimiento que da la nota leyendo el valor del tiempo 
   for(m=0;m<=tiempo;m++){              // de pulso de la cadena    
     digitalWrite(zumb,HIGH);
     delayMicroseconds(notas[n]);
     digitalWrite(zumb,LOW);
     delayMicroseconds(notas[n]);
   }
 }
 void compruebacierto(){
   if(digitalRead(puls)==HIGH){
     if(n==1){
       digitalWrite(zumb,HIGH);
       delay(500);
       digitalWrite(zumb,LOW);
       tiempo=tiempo-10;
       }
     else{
       digitalWrite(cadenaLeds[n], HIGH);
       nota();
       delay(500);
     }
   }
 }
 void loop(){
   for(n=0;n<4;n++){
     digitalWrite(cadenaLeds[n], HIGH);
     nota();
     compruebacierto();
     digitalWrite(cadenaLeds[n],LOW);
     delay(tiempo);
     if(tiempo<=10){
       tiempo=160;
     }
   }
 }

Volver?

  Copyright (c) 2006  Juan Carlos Alonso de Mena

  Permission is granted to copy, distribute and/or modify this document under the terms of 
 the GNU Free Documentation License, Version 1.2 or any later version published by the
 Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
 Back-Cover Texts.  A copy of the license is included in the section entitled 
 GNU Free Documentation License?.