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.
Diff: main.cpp
- Revision:
- 25:7aae27772b0b
- Parent:
- 24:7f14b70fc9ef
--- a/main.cpp Mon Apr 08 11:03:25 2019 +0100
+++ b/main.cpp Wed Jun 17 23:35:07 2020 +0000
@@ -1,12 +1,218 @@
#include "mbed.h"
-
-DigitalOut myled(LED1);
-
+#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() {
- while(1) {
- myled = 1;
- wait(0.2);
- myled = 0;
- wait(0.2);
+
+ 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;
+ }
+ }
+
}
}
+}
\ No newline at end of file