Ejercicio 11: Sirena

Requisitos: Un zumbador piezoeléctrico

Planteamiento: Un aviso sonoro que no se puede ignorar.

En este ejercicio recorremos el espectro de frecuencias que reproduce el zumbador piezoeléctrico. Usamos una variable como contador decreciente que va guardando los valores de las duraciones del pulso asociadas a cada frecuencia, con lo que según va disminuyendo, en saltos que podemos graduar, (hemos elegido que disminuya de 10 en 10 pero eso puede cambiarse) las frecuencias aumentan de forma casi continua.

La iteración con for aporta una pequeña duración repitiendo brevemente cada frecuencia.

Cuando el contador desciende hasta una duración mínima(hemos elegido 800) volvemos a empezar reiniciando la variable del contador.

Variaciones:

  • Prueba con otros valores de tiempos para el pulso más extremos y verifica hasta dónde responde el piezoeléctrico.
  • Cambia el valor de la duración asignando una variable al valor máximo en for y escucha los distintos efectos.

VIDEO DEL EJERCICIO 11

VIDEO DEL EJERCICIO 11 (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 notas[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956};
 int zumb=10;
 int n=0;
 int m=3000;                          //duración del pulso para la frecuencia inicial (la  más baja)
 int pausa=1000;
 void setup() { 
   pinMode(zumb,OUTPUT);
 } 
 void loop(){
   for(n=0;n<5;n++){                  //Una duración cortita para cada frecuencia
     digitalWrite(zumb,HIGH);
     delayMicroseconds(m);
     digitalWrite(zumb,LOW);
     delayMicroseconds(m);
   }
   m=m-10;                            //disminuye el semiperiodo, o sea, que aumenta la frecuencia
   if(m<800){                         //si la duración del pulso alcanza un valor mínimo (frecuencia máxima)
     m=3000;                          //restauramos la duración inicial para que empiece de nuevo
     delay(pausa);                    //tiempo de silencio entre sirenas
   }  
 }

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?.