Página principal


Arduino
TM1638

Temporizador 1 a 9999 segundos
xsetaseta@gmail.com


Siguiendo con el módulo que empleaba el CHIP TM1638, ahora hago un temporizador de 1 a 9999 segundos.
Es un contador que va desde el numero de segundos prefijado en los cuatro primeros  displays hasta cero.
El numero de segundos es fijado con los 4 primeros pulsadores.
Cuando queramos que se inicie la cuenta atrás pulsaremos el botón S8.
Si queremos detener la cuenta atrás deberemos pulsar el botón S5.
Cuando el contador llegue a cero, parpadeará el display y se activará el pin D13 del arduino.
También he colocado un altavoz piezoeléctrico en el pin D12 del arduino a modo de aviso, esto es accesorio. Si queremos colocar otro tipo de altavoz deberéis colocar una resistencia en serie.

Esquema de conexión.


Montaje del circuito.

/*
xsetaseta@gmail.com
Juan Galaz
5/SEP/2017
*/ #include <TM1638.h> // define a module on data pin 8, clock pin 9 and strobe pin 7 TM1638 module(8, 9, 7); byte display[8]; char cadena[20]; int alarma,contador,time1; #define MILED 13 #define PIN_SOUND 12 #define RETRASO 597 char fcontador; void setup() {  pinMode(MILED, OUTPUT);  pinMode(PIN_SOUND, OUTPUT);  digitalWrite(MILED, LOW);  module.setupDisplay(1,0);  module.setDisplayToString("TIMER  ",0,0);  delay(500);    module.setDisplayToString("0060----",0,0);  display[2]=6;  alarma=60; } void loop() {  byte keys;  int z;    keys = module.getButtons();    switch(keys)  {   case 1:      if(fcontador==0)        {display[0]++; if(display[0]>9) display[0]=0;}   break;   case 2:      if(fcontador==0)        {display[1]++; if(display[1]>9) display[1]=0;}   break;   case 4:      if(fcontador==0)        {display[2]++; if(display[2]>9) display[2]=0;}   break;   case 8:      if(fcontador==0)        {display[3]++; if(display[3]>9) display[3]=0;}   break;      case 16:     fcontador=0;     contador=alarma;     digitalWrite(MILED, LOW);     module.setLEDs(16);   break;      case 128:     fcontador=1;     contador=alarma;     time1=RETRASO;     digitalWrite(MILED, LOW);     module.setLEDs(128);   break;      }  if(fcontador==0 && keys>0)    {     alarma=display[0]*1000+display[1]*100+display[2]*10+display[3];     sprintf(cadena,"%04d%04d",alarma,contador);     module.setDisplayToString(cadena,0,0);     delay(300);    }        time1--;    if(fcontador==1 && time1<=0)      {        module.setLEDs(0);        time1=RETRASO;        contador--;        sprintf(cadena,"%04d%04d",alarma,contador);        module.setDisplayToString(cadena,0,0);                if(contador<1)          {            fcontador=0;            for(z=0;z<10;z++)              {                sprintf(cadena,"%04d0000",alarma);                module.setDisplayToString(cadena,0,0);                delay(200);                sprintf(cadena,"%04d    ",alarma);                module.setDisplayToString(cadena,0,0);                delay(200);                              }             sprintf(cadena,"%04d----",alarma);             module.setDisplayToString(cadena,0,0);             digitalWrite(MILED,HIGH);                          for(z=0;z<300;z++)               {                 digitalWrite(PIN_SOUND, HIGH);                 delay(1);                 digitalWrite(PIN_SOUND, LOW);                 delay(1);               }                    }      }      delay(1); }

VIDEO DE FUNCIONAMIENTO


Hasta pronto.
JUAN GALAZ

Bibliografía:
https://github.com/rjbatista/tm1638-library