control para un reloj cukoo
Dependencies: mbed DebouncedIn Pulse1
main.cpp
00001 /* 00002 CONTROL DE RELOJ CUCU 00003 produce sonidos mp3 almacenados en un moduludo de audio YX5300 00004 usa un modulo FRDMKL25Z 00005 los sonidos se reproducen desde una tarjeta micro SD que los almacena y son 3: 00006 sonido de cucu 00007 sonido de apertura 00008 sonido de cierre 00009 los sonidos se reproducen enviando el comando respectivo en formato HEX 00010 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 00011 conformar un pulso Alto que dura lo que dure los campanazos del reloj son un poco mas de 10 segundos. 00012 para filtrar las campanazos intermedios que duran menos de diez segundos este programa detecta que la duracion del pulso 00013 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 00014 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 00015 */ 00016 00017 00018 #include "mbed.h" 00019 #include "DebouncedIn.h" 00020 #include <Pulse1.h> 00021 int i=0,j=0,k=0; 00022 float T; 00023 Timer t; 00024 //...............salidas el sistema..................... 00025 DigitalOut led2(LED2);// motor casita 00026 DigitalOut m1(PTB8);// motor casita 00027 DigitalOut m2(PTB9);// motor casita 00028 DigitalOut m3(PTB10);// plunger pajaro 00029 DigitalOut m4(PTB11);// plunger pajaro 00030 //............entradas ........al sistema 00031 InterruptIn button(PTA13); 00032 Serial pc(USBTX, USBRX); 00033 Serial bird(PTE0,PTE1); //Configura puerto UART de la FRDMKL25Z 00034 00035 //comandos del modulo YX5300 PARA HACER SONAR EL CUCU y otras cosas 00036 const char cucu1[8]={0x7E, 0xFF, 0x06, 0x03, 0x00, 0x00, 0x01, 0xEF};// CUCU 00037 const char openP[8]={0x7E, 0xFF, 0x06, 0x03, 0x00, 0x00, 0x02, 0xEF};// ABRIR PUERTA 00038 const char closeP[8]={0x7E, 0xFF, 0x06, 0x03, 0x00, 0x00, 0x03, 0xEF};// CERRAR PUERTA 00039 const char slep[8]={0x7E, 0xFF, 0x06, 0x0A, 0x00, 0x00, 0x00, 0xEF};// modo sleep 00040 const char awake[8]={0x7E, 0xFF, 0x06, 0x0B, 0x00, 0x00, 0x00, 0xEF};// despertar el modulo 00041 void up() { //detecta flanco de subida del cucu en el parlanmte 00042 t.start(); //flanco de subida dispara la cuen ta del cronometro. 00043 00044 } 00045 void dw() { //detecta flanco de bajada en el reloj y para lee y borra el cronometro....... 00046 t.stop(); 00047 T=t.read(); 00048 t.reset(); 00049 } 00050 00051 //...entrar en modo sleep para ahorar bateria........................ 00052 //.....................SLEEP......................................... 00053 void slp(){ 00054 for(i=0;i<8;i++){ 00055 bird.printf("%c",slep[i]); 00056 } 00057 } 00058 00059 //.....................AWAKE.........despierta el modulo............... 00060 void awak(){ 00061 for(i=0;i<8;i++){ 00062 bird.printf("%c", awake[i]); 00063 } 00064 } 00065 00066 //.....................CLOSE.......sonido.............................. 00067 void closed(){ 00068 for(i=0;i<8;i++){ 00069 bird.printf("%c", closeP[i]); 00070 } 00071 } 00072 //.....................OPEN........sonido.............................. 00073 void open(){ 00074 for(i=0;i<8;i++){ 00075 bird.printf("%c", openP[i]); 00076 } 00077 } 00078 00079 //.....................SONIDOS DEL CUCU SEGUN LA HORA............... 00080 // esta funcion produce el sonido del cucu segun la hora se encarga de accionar todos los mecanismos del cucu 00081 // como la puerta y el pajaro, h es el valor de la hora de 1-12 00082 void cucu(int h){ 00083 //.....................abrir la puerta.............................. 00084 awak(); 00085 wait(1); 00086 m1=1; 00087 m2=0; 00088 open();//sonido abrir sonido de puerta chirriando.. 00089 wait(1); 00090 00091 //.................................................................. 00092 m1=0; 00093 m2=0; 00094 //....termina apertura de puerta 00095 for(j=0;j<k;j++){// 00096 //.....................acciona plunger pico......................... 00097 m3=1; 00098 m4=0; 00099 for(i=0;i<8;i++){ 00100 bird.printf("%c", cucu1[i]); 00101 } 00102 00103 wait(1); 00104 //...............se desenergiza el plunger pico..................... 00105 m3=0; 00106 m4=0; 00107 } 00108 //..............se sierra la puerta..termino de sonar el cucu....... 00109 m1=0; 00110 m2=1; 00111 closed();//...sonido de purta cerrada........................... 00112 wait(1); 00113 m1=0; 00114 m2=0; //desenergiza puerta para ahorrar bateria................ 00115 slp(); 00116 wait(1); 00117 00118 } 00119 00120 int main( ){ 00121 led2=0; 00122 wait(1); 00123 led2=1; 00124 m1=0; 00125 m2=0; 00126 m3=0; 00127 m4=0; 00128 button.rise(&up); // enlaza la señal del reloj con una interupcion para el flanco de subida 00129 button.fall(&dw); // enlaza la señal del reloj con una interupcion para el flanco de caida 00130 while(1) { 00131 if(T>10){ 00132 ++k; 00133 if(k>12){ 00134 k=1; 00135 } 00136 cucu(k); 00137 pc.printf("T=%f,",T); 00138 pc.printf("k=%d,",k); 00139 00140 T=0; 00141 00142 00143 } 00144 00145 } 00146 } 00147 00148
Generated on Mon Aug 22 2022 10:12:45 by 1.7.2