Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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;
}
}
}
}
}