![](/media/cache/profiles/bd1ce36d68a5c2bea97fe45863673b20.jpg.50x50_q85.jpg)
control para un reloj cukoo
Dependencies: mbed DebouncedIn Pulse1
Revision 0:ed0fa031f04b, committed 2019-05-06
- Comitter:
- tony63
- Date:
- Mon May 06 06:12:59 2019 +0000
- Commit message:
- control para un reloj cukoo
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DebouncedIn.lib Mon May 06 06:12:59 2019 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/cmorab/code/DebouncedIn/#dc1131de43e8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Pulse1.lib Mon May 06 06:12:59 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/tony63/code/Pulse1/#48651f86a80c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon May 06 06:12:59 2019 +0000 @@ -0,0 +1,148 @@ +/* +CONTROL DE RELOJ CUCU +produce sonidos mp3 almacenados en un moduludo de audio YX5300 +usa un modulo FRDMKL25Z +los sonidos se reproducen desde una tarjeta micro SD que los almacena y son 3: +sonido de cucu +sonido de apertura +sonido de cierre +los sonidos se reproducen enviando el comando respectivo en formato HEX +se tomo la señal de audio de sonido de un reloj con pendulo EDMINISTER y se le filtro la componente de alta frecuencia para +conformar un pulso Alto que dura lo que dure los campanazos del reloj son un poco mas de 10 segundos. +para filtrar las campanazos intermedios que duran menos de diez segundos este programa detecta que la duracion del pulso +que marca la hora dedel CUCU y verifica que dura mas de 10 segundos procede a hacer sonar el cucu con todo su acionamiento respectivo +el conteo se hace de 1 a 12, se puede incorporar una señal proveniente de una foto resistencia para que el cucu no suene en la oscuridad +*/ + + +#include "mbed.h" +#include "DebouncedIn.h" +#include <Pulse1.h> +int i=0,j=0,k=0; +float T; +Timer t; +//...............salidas el sistema..................... +DigitalOut led2(LED2);// motor casita +DigitalOut m1(PTB8);// motor casita +DigitalOut m2(PTB9);// motor casita +DigitalOut m3(PTB10);// plunger pajaro +DigitalOut m4(PTB11);// plunger pajaro +//............entradas ........al sistema +InterruptIn button(PTA13); +Serial pc(USBTX, USBRX); +Serial bird(PTE0,PTE1); //Configura puerto UART de la FRDMKL25Z + +//comandos del modulo YX5300 PARA HACER SONAR EL CUCU y otras cosas +const char cucu1[8]={0x7E, 0xFF, 0x06, 0x03, 0x00, 0x00, 0x01, 0xEF};// CUCU +const char openP[8]={0x7E, 0xFF, 0x06, 0x03, 0x00, 0x00, 0x02, 0xEF};// ABRIR PUERTA +const char closeP[8]={0x7E, 0xFF, 0x06, 0x03, 0x00, 0x00, 0x03, 0xEF};// CERRAR PUERTA +const char slep[8]={0x7E, 0xFF, 0x06, 0x0A, 0x00, 0x00, 0x00, 0xEF};// modo sleep +const char awake[8]={0x7E, 0xFF, 0x06, 0x0B, 0x00, 0x00, 0x00, 0xEF};// despertar el modulo +void up() { //detecta flanco de subida del cucu en el parlanmte + t.start(); //flanco de subida dispara la cuen ta del cronometro. + +} +void dw() { //detecta flanco de bajada en el reloj y para lee y borra el cronometro....... + t.stop(); + T=t.read(); + t.reset(); +} + +//...entrar en modo sleep para ahorar bateria........................ +//.....................SLEEP......................................... +void slp(){ + for(i=0;i<8;i++){ + bird.printf("%c",slep[i]); + } + } + +//.....................AWAKE.........despierta el modulo............... +void awak(){ + for(i=0;i<8;i++){ + bird.printf("%c", awake[i]); + } + } + +//.....................CLOSE.......sonido.............................. +void closed(){ + for(i=0;i<8;i++){ + bird.printf("%c", closeP[i]); + } + } +//.....................OPEN........sonido.............................. +void open(){ + for(i=0;i<8;i++){ + bird.printf("%c", openP[i]); + } + } + +//.....................SONIDOS DEL CUCU SEGUN LA HORA............... +// esta funcion produce el sonido del cucu segun la hora se encarga de accionar todos los mecanismos del cucu +// como la puerta y el pajaro, h es el valor de la hora de 1-12 +void cucu(int h){ +//.....................abrir la puerta.............................. + awak(); + wait(1); + m1=1; + m2=0; + open();//sonido abrir sonido de puerta chirriando.. + wait(1); + +//.................................................................. + m1=0; + m2=0; +//....termina apertura de puerta + for(j=0;j<k;j++){// +//.....................acciona plunger pico......................... + m3=1; + m4=0; + for(i=0;i<8;i++){ + bird.printf("%c", cucu1[i]); + } + + wait(1); +//...............se desenergiza el plunger pico..................... + m3=0; + m4=0; + } +//..............se sierra la puerta..termino de sonar el cucu....... + m1=0; + m2=1; + closed();//...sonido de purta cerrada........................... + wait(1); + m1=0; + m2=0; //desenergiza puerta para ahorrar bateria................ + slp(); + wait(1); + + } + +int main( ){ + led2=0; + wait(1); + led2=1; + m1=0; + m2=0; + m3=0; + m4=0; + button.rise(&up); // enlaza la señal del reloj con una interupcion para el flanco de subida + button.fall(&dw); // enlaza la señal del reloj con una interupcion para el flanco de caida + while(1) { + if(T>10){ + ++k; + if(k>12){ + k=1; + } + cucu(k); + pc.printf("T=%f,",T); + pc.printf("k=%d,",k); + + T=0; + + + } + + } +} + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon May 06 06:12:59 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file