Ir al contenido principal

UN CRONÓMETRO MASTERCHEF

Los alumnos de FP Básica estamos fabricando en la asignatura Equipos Eléctricos y Electrónicos un cronómetro programable tipo MasterChef para nuestros compañeros y compañeras de hostelería.
Esperamos en la próxima entrada poder subir fotos de como ha quedado finalmente,su funcionamiento y su inauguración en las cocinas.


















Materiales:

  • Tablero contrachapado, 
  • 1 Arduino,
  • 140 Leds, 
  • Cinta aislante
  • Estaño
  • 3 Pulsadores normalmente abiertos (botonera)
  • 1 Interruptor, 
  • 1 Porta-pilas,
  • 4 Pilas de 1,5 V
  • 1 Pila de 9 V 
  • 2 Placas de circuito impreso
Herramientas:
  • Sierra de calar
  • Taladro
  • Barrena
  • Soldador
  • Multímetro
  • Fuente de alimentación



CÓDIGO ARDUINO DEL CRONOMETRO:
//RELOJ VERSION V_1

//binario D C B A, minutos o segundos, decenas o unidades
  #define CminD 19
  #define BminD 18
  #define AminD 17

  #define DminU 10
  #define CminU 9
  #define BminU 8
  #define AminU 7

  #define CsegD 6
  #define BsegD 5
  #define AsegD 4

  #define DsegU 3
  #define CsegU 2
  #define BsegU 1
  #define AsegU 0

//botones control
  #define minup 11
  #define mindown 12
  #define start 13

//minutos, segundos y variables para leer botones
  int minutos=0;
  int segundos=0;
  bool up=0;
  bool down=0;
  bool empieza=0;
  int digitomindecenas=0;
  int digitominunidades=0;
  int digitosegdecenas=0;
  int digitosegunidades=0;


void setup() {
  // salidas a los decodificadores
  pinMode(CminD, OUTPUT);
  pinMode(BminD, OUTPUT);
  pinMode(AminD, OUTPUT);
  pinMode(DminU, OUTPUT);
  pinMode(CminU, OUTPUT);
  pinMode(BminU, OUTPUT);
  pinMode(AminU, OUTPUT);
  pinMode(CsegD, OUTPUT);
  pinMode(BsegD, OUTPUT);
  pinMode(AsegD, OUTPUT);
  pinMode(DsegU, OUTPUT);
  pinMode(CsegU, OUTPUT);
  pinMode(BsegU, OUTPUT);
  pinMode(AsegU, OUTPUT);

  //entradas botonera
  pinMode(minup, INPUT);
  pinMode(mindown, INPUT);
  pinMode(start, INPUT);

  Serial.begin(9600);
}


void loop() {

  digitosegdecenas = 0;
  digitosegunidades = 0;
  up = digitalRead(minup);
  down = digitalRead(mindown);
  empieza = digitalRead(start);
 
       if ((up == HIGH) && (minutos < 60) && (empieza == LOW)) {
            minutos++;
            delay(1200);
            digitomindecenas = (minutos/10);
            digitominunidades = (minutos-(digitomindecenas*10));
            dibujardecenas (digitomindecenas, AminD, BminD, CminD);
            dibujarunidades (digitominunidades, AminU, BminU, CminU, DminU);
            dibujardecenas (digitosegdecenas, AsegD, BsegD, CsegD);
            dibujarunidades (digitosegunidades, AsegU, BsegU, CsegU, DsegU);
            Serial.print(digitomindecenas);
            Serial.print(digitominunidades);
            Serial.print(digitosegdecenas);
            Serial.println(digitosegunidades);
         
         }
       if ((down == HIGH) && (minutos > 0) && (empieza == LOW)) {
            minutos--;
            delay(1200);
            digitomindecenas = (minutos/10);
            digitominunidades = (minutos-(digitomindecenas*10));
            dibujardecenas (digitomindecenas, AminD, BminD, CminD);
            dibujarunidades (digitominunidades, AminU, BminU, CminU, DminU);
            dibujardecenas (digitosegdecenas, AsegD, BsegD, CsegD);
            dibujarunidades (digitosegunidades, AsegU, BsegU, CsegU, DsegU);
            Serial.print(digitomindecenas);
            Serial.print(digitominunidades);
            Serial.print(digitosegdecenas);
            Serial.println(digitosegunidades);
         }


       if (empieza == HIGH) {
            segundos = minutos*60;
         
            while (segundos > 0) {
           
              segundos--;
              minutos = segundos/60;
              digitomindecenas = minutos/10;
              digitominunidades = minutos-(digitomindecenas*10);
              digitosegdecenas = (segundos-(digitominunidades*60)-(digitomindecenas*600))/10;
              digitosegunidades = segundos-(digitominunidades*60)-(digitomindecenas*600)-(digitosegdecenas*10) ;
              dibujardecenas (digitomindecenas, AminD, BminD, CminD);
              dibujarunidades (digitominunidades, AminU, BminU, CminU, DminU);
              dibujardecenas (digitosegdecenas, AsegD, BsegD, CsegD);
              dibujarunidades (digitosegunidades, AsegU, BsegU, CsegU, DsegU);
              Serial.print(digitomindecenas);
              Serial.print(digitominunidades);
              Serial.print(digitosegdecenas);
              Serial.println(digitosegunidades);
              delay(1000);
           
              }
     
         }
     
}






//Funcion decodificador 7448 unidades:
void dibujarunidades (int num, int A, int B, int C, int D){

 switch (num) {
  case 0: {
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
            break;
      }
  case 1: {
      digitalWrite(A, HIGH);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
            break;
      }
  case 2: {
      digitalWrite(A, LOW);
      digitalWrite(B, HIGH);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
            break;
      }
  case 3: {
      digitalWrite(A, HIGH);
      digitalWrite(B, HIGH);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
            break;
      }
  case 4:{
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, HIGH);
      digitalWrite(D, LOW);
            break;
      }
  case 5:{
      digitalWrite(A, HIGH);
      digitalWrite(B, LOW);
      digitalWrite(C, HIGH);
      digitalWrite(D, LOW);
            break;
      } 
  case 6: {
      digitalWrite(A, LOW);
      digitalWrite(B, HIGH);
      digitalWrite(C, HIGH);
      digitalWrite(D, LOW);
            break;
      }
  case 7:{
      digitalWrite(A, HIGH);
      digitalWrite(B, HIGH);
      digitalWrite(C, HIGH);
      digitalWrite(D, LOW);
            break;
      }
  case 8:{
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, HIGH);
            break;
      }
  case 9: {
      digitalWrite(A, HIGH);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, HIGH);
            break;
      }
  }
}




//Funcion decodificador 7448 decenas, poner D siempre en bajo:
int dibujardecenas (int num, int A, int B, int C){

 switch (num) {
  case 0: {
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
            break;
      }
  case 1: {
      digitalWrite(A, HIGH);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
            break;
      }
  case 2: {
      digitalWrite(A, LOW);
      digitalWrite(B, HIGH);
      digitalWrite(C, LOW);
            break;
      }
  case 3: {
      digitalWrite(A, HIGH);
      digitalWrite(B, HIGH);
      digitalWrite(C, LOW);
            break;
      }
  case 4:{
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, HIGH);
            break;
      }
  case 5:{
      digitalWrite(A, HIGH);
      digitalWrite(B, LOW);
      digitalWrite(C, HIGH);
            break;
      } 
  }
}

Comentarios