control para un reloj cukoo

Dependencies:   mbed DebouncedIn Pulse1

Files at this revision

API Documentation at this revision

Comitter:
tony63
Date:
Mon May 06 06:12:59 2019 +0000
Commit message:
control para un reloj cukoo

Changed in this revision

DebouncedIn.lib Show annotated file Show diff for this revision Revisions of this file
Pulse1.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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