Mon Hdz / Mbed 2 deprecated PF_EQ3

Dependencies:   mbed

main.cpp

Committer:
montse
Date:
2020-06-17
Revision:
25:7aae27772b0b
Parent:
24:7f14b70fc9ef

File content as of revision 25:7aae27772b0b:

#include "mbed.h"
#include "C12832.h"
 //El siguiente codigo debe ser copiado y pegado en el simulador MBED
 
DigitalOut L1(p8);
DigitalOut L2(p9);
DigitalOut L3(p10);
AnalogIn pot(p15);
PwmOut speaker(p21);
C12832 lcd(SPI_MOSI, SPI_SCK, SPI_MISO, p8, p11);
 
 
//Contadores para cada dígito
int seg1=0; //Variable para contador de unidades de segundo
int seg2=0; //Variable para contador de décimas de segundo
int min1=0; //Variable para contador de unidades de minuto
int min2=0; //Variable para contador de décimas de minuto
int hor1=0; //Variable para contador de unidades de hora
int hor2=0; //Variable para contador de décimas de hora
 
void reloj(){//Subrutina para generar reloj de 6 segmentos
    lcd.locate(21,1);//Posicionamiento de las unidades de hora
    lcd.printf("%i", hor1);
    lcd.locate(11,1);//Posicionamiento de las décimas de hora
    lcd.printf("%i",hor2);
    lcd.locate(26,1);//Posicionamiento del doble punto
    lcd.printf(":");
    lcd.locate(42,1);//Posicionamiento de las unidades de minuto
    lcd.printf("%i",min1);
    lcd.locate(32,1);//Posicionamiento de las décimas de minuto
    lcd.printf("%i",min2);
    lcd.locate(49,1);//Posicionamiento del punto doble
    lcd.printf(":");
    lcd.locate(63,1);//Posicionamiento de las unidades de segundo
    lcd.printf("%i",seg1);
    lcd.locate(53,1);//Posicionamiento de las décimas de segundo
    lcd.printf("%i",seg2);
}
 
 void play_tone(float frequency, float volume, int interval, int rest) {
    speaker.period(1.0 / frequency);
    speaker = volume;
    wait(interval);
    speaker = 0.0;
    wait(rest);
}
int main() {
    
     printf("Proyecto final, equipo 3\n");
     printf("Código: 8569 \n");    
float x;
    lcd.cls();
    while(1){
    x = 5*pot.read();
    
    if(x<3.5){
        
    lcd.cls(); //Limpia el LCD
    lcd.locate(15, 15); //Posiciona en columna 2, fila 0)
    lcd.printf("Tiempo de inactividad"); //Imprime en LCD "Reloj digital"
    lcd.copy_to_lcd();
    
    
        
        reloj(); //Llama a subrutina
            
        seg1++; //Inician el primer contador de unidades de segundo
        wait(1); //Genera tiempo de un segundo
        if (seg1==10){
            seg2++;//Contador décimas de segundo
            seg1=0;
            if (seg2==6){
                min1++;//Contador unidades de minuto
                seg2=0;
                if (min1==10){
                    min2++;//Contador décimas de minuto
                    min1=0;
                    if(min2==6){
                        hor1++;//Contador unidades de hora
                        min2=0;
                        if(hor1==10){
                            hor2++;//Contador décimas de hora
                            hor1=0;
                            if((hor2==2)&&(hor1==4)){/*Cuando el contador llega
                                                       a 24hrs, este se reinicia*/
                                hor2=0;
                                hor1=0;
                            }
                        }
                    }
                }
            }
        }  
    }
    
    
    if(x>=3.5){
        
 int valida = 8569;
 int clave;
 int intentos;
 
 
         lcd.cls();
        lcd.locate(1,1);
        lcd.printf( "Introduzca su clave: ");
        wait(1);
        scanf("%i", &clave) ;
   wait(1);
    
    if(clave != valida) {
            lcd.cls();
            lcd.locate(1,1);
            lcd.printf("No valida!");
            lcd.copy_to_lcd();
            
            play_tone(125.0, 0.5, 1, 2);
            play_tone(125.0, 0.5, 1, 2);
            L1 = 1;
            wait(0.3);
            L1 = 0;
            wait(0.3);
            L1 = 1;
            wait(0.3);
            L1 = 0;
            wait(0.3);
            L1 = 1;
            wait(0.3);
            L1 = 0;
            lcd.cls();
            clave=0;
            intentos++;
            if(intentos==3){ 
                int p=0;
                for (p; p<10; p++){
            lcd.cls();
            lcd.locate(1,1);
            lcd.printf("Sistema bloqueado %d", p);
            lcd.copy_to_lcd();
            play_tone(125.0, 0.5, 1, 0.5);
            play_tone(800.0, 0.5, 1, 0.5);
            play_tone(125.0, 0.5, 1, 0.5);
                }
            }
        } 
    
    if (clave == valida){
        lcd.cls();
        lcd.locate(1,1);
        lcd.printf("Aceptada.");
        lcd.locate(1,15);
        lcd.printf("Abriendo compuerta...");
         play_tone(800.0, 0.5, 0.7, 1);
            L2 = 1;
            L3 = 1;
            wait(0.3);
            L2 = 0;
            wait(0.3);
            L2 = 1;
            wait(0.3);
            L2 = 0;
            wait(0.3);
            L2 = 1;
            wait(0.3);
            L2 = 0;
            wait(15);
            L3 = 0;
            Abrir:
        lcd.cls();
        lcd.locate(20,1);
        lcd.printf("Compuerta abierta");
        lcd.locate(1,10);
        lcd.printf( "Introduzca su clave");
        lcd.locate(1,20);
        lcd.printf( "para cerrar");
        wait(1);
        scanf("%i", &clave) ;
        wait(1);
        if (clave == valida){
                lcd.cls();
        lcd.locate(1,1);
        lcd.printf("Aceptada.");
        lcd.locate(1,15);
        lcd.printf("Cerrando...");
         play_tone(800.0, 0.5, 0.7, 1);
            L2 = 1;
            L3 = 1;
            wait(0.3);
            L2 = 0;
            wait(0.3);
            L2 = 1;
            wait(0.3);
            L2 = 0;
            wait(0.3);
            L2 = 1;
            wait(0.3);
            L2 = 0;
            wait(15);
            L3 = 0;
        lcd.cls();
        lcd.locate(20,5);
        lcd.printf("Compuerta cerrada");
        wait(3);
             }
             else{ 
                 lcd.cls();
        lcd.locate(10,1);
        lcd.printf("Incorrecto Vuelva");
        lcd.locate(10,10);
        lcd.printf(" a intentarlo");
        wait(3);
                 goto Abrir;
             }
    }
 
    }
}
}