Mon Hdz / Mbed 2 deprecated PF_EQ3

Dependencies:   mbed

Committer:
montse
Date:
Wed Jun 17 23:35:07 2020 +0000
Revision:
25:7aae27772b0b
Parent:
24:7f14b70fc9ef
Alarma de compuerta;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan 0:7dec7e9ac085 1 #include "mbed.h"
montse 25:7aae27772b0b 2 #include "C12832.h"
montse 25:7aae27772b0b 3 //El siguiente codigo debe ser copiado y pegado en el simulador MBED
montse 25:7aae27772b0b 4
montse 25:7aae27772b0b 5 DigitalOut L1(p8);
montse 25:7aae27772b0b 6 DigitalOut L2(p9);
montse 25:7aae27772b0b 7 DigitalOut L3(p10);
montse 25:7aae27772b0b 8 AnalogIn pot(p15);
montse 25:7aae27772b0b 9 PwmOut speaker(p21);
montse 25:7aae27772b0b 10 C12832 lcd(SPI_MOSI, SPI_SCK, SPI_MISO, p8, p11);
montse 25:7aae27772b0b 11
montse 25:7aae27772b0b 12
montse 25:7aae27772b0b 13 //Contadores para cada dígito
montse 25:7aae27772b0b 14 int seg1=0; //Variable para contador de unidades de segundo
montse 25:7aae27772b0b 15 int seg2=0; //Variable para contador de décimas de segundo
montse 25:7aae27772b0b 16 int min1=0; //Variable para contador de unidades de minuto
montse 25:7aae27772b0b 17 int min2=0; //Variable para contador de décimas de minuto
montse 25:7aae27772b0b 18 int hor1=0; //Variable para contador de unidades de hora
montse 25:7aae27772b0b 19 int hor2=0; //Variable para contador de décimas de hora
montse 25:7aae27772b0b 20
montse 25:7aae27772b0b 21 void reloj(){//Subrutina para generar reloj de 6 segmentos
montse 25:7aae27772b0b 22 lcd.locate(21,1);//Posicionamiento de las unidades de hora
montse 25:7aae27772b0b 23 lcd.printf("%i", hor1);
montse 25:7aae27772b0b 24 lcd.locate(11,1);//Posicionamiento de las décimas de hora
montse 25:7aae27772b0b 25 lcd.printf("%i",hor2);
montse 25:7aae27772b0b 26 lcd.locate(26,1);//Posicionamiento del doble punto
montse 25:7aae27772b0b 27 lcd.printf(":");
montse 25:7aae27772b0b 28 lcd.locate(42,1);//Posicionamiento de las unidades de minuto
montse 25:7aae27772b0b 29 lcd.printf("%i",min1);
montse 25:7aae27772b0b 30 lcd.locate(32,1);//Posicionamiento de las décimas de minuto
montse 25:7aae27772b0b 31 lcd.printf("%i",min2);
montse 25:7aae27772b0b 32 lcd.locate(49,1);//Posicionamiento del punto doble
montse 25:7aae27772b0b 33 lcd.printf(":");
montse 25:7aae27772b0b 34 lcd.locate(63,1);//Posicionamiento de las unidades de segundo
montse 25:7aae27772b0b 35 lcd.printf("%i",seg1);
montse 25:7aae27772b0b 36 lcd.locate(53,1);//Posicionamiento de las décimas de segundo
montse 25:7aae27772b0b 37 lcd.printf("%i",seg2);
montse 25:7aae27772b0b 38 }
montse 25:7aae27772b0b 39
montse 25:7aae27772b0b 40 void play_tone(float frequency, float volume, int interval, int rest) {
montse 25:7aae27772b0b 41 speaker.period(1.0 / frequency);
montse 25:7aae27772b0b 42 speaker = volume;
montse 25:7aae27772b0b 43 wait(interval);
montse 25:7aae27772b0b 44 speaker = 0.0;
montse 25:7aae27772b0b 45 wait(rest);
montse 25:7aae27772b0b 46 }
dan 0:7dec7e9ac085 47 int main() {
montse 25:7aae27772b0b 48
montse 25:7aae27772b0b 49 printf("Proyecto final, equipo 3\n");
montse 25:7aae27772b0b 50 printf("Código: 8569 \n");
montse 25:7aae27772b0b 51 float x;
montse 25:7aae27772b0b 52 lcd.cls();
montse 25:7aae27772b0b 53 while(1){
montse 25:7aae27772b0b 54 x = 5*pot.read();
montse 25:7aae27772b0b 55
montse 25:7aae27772b0b 56 if(x<3.5){
montse 25:7aae27772b0b 57
montse 25:7aae27772b0b 58 lcd.cls(); //Limpia el LCD
montse 25:7aae27772b0b 59 lcd.locate(15, 15); //Posiciona en columna 2, fila 0)
montse 25:7aae27772b0b 60 lcd.printf("Tiempo de inactividad"); //Imprime en LCD "Reloj digital"
montse 25:7aae27772b0b 61 lcd.copy_to_lcd();
montse 25:7aae27772b0b 62
montse 25:7aae27772b0b 63
montse 25:7aae27772b0b 64
montse 25:7aae27772b0b 65 reloj(); //Llama a subrutina
montse 25:7aae27772b0b 66
montse 25:7aae27772b0b 67 seg1++; //Inician el primer contador de unidades de segundo
montse 25:7aae27772b0b 68 wait(1); //Genera tiempo de un segundo
montse 25:7aae27772b0b 69 if (seg1==10){
montse 25:7aae27772b0b 70 seg2++;//Contador décimas de segundo
montse 25:7aae27772b0b 71 seg1=0;
montse 25:7aae27772b0b 72 if (seg2==6){
montse 25:7aae27772b0b 73 min1++;//Contador unidades de minuto
montse 25:7aae27772b0b 74 seg2=0;
montse 25:7aae27772b0b 75 if (min1==10){
montse 25:7aae27772b0b 76 min2++;//Contador décimas de minuto
montse 25:7aae27772b0b 77 min1=0;
montse 25:7aae27772b0b 78 if(min2==6){
montse 25:7aae27772b0b 79 hor1++;//Contador unidades de hora
montse 25:7aae27772b0b 80 min2=0;
montse 25:7aae27772b0b 81 if(hor1==10){
montse 25:7aae27772b0b 82 hor2++;//Contador décimas de hora
montse 25:7aae27772b0b 83 hor1=0;
montse 25:7aae27772b0b 84 if((hor2==2)&&(hor1==4)){/*Cuando el contador llega
montse 25:7aae27772b0b 85 a 24hrs, este se reinicia*/
montse 25:7aae27772b0b 86 hor2=0;
montse 25:7aae27772b0b 87 hor1=0;
montse 25:7aae27772b0b 88 }
montse 25:7aae27772b0b 89 }
montse 25:7aae27772b0b 90 }
montse 25:7aae27772b0b 91 }
montse 25:7aae27772b0b 92 }
montse 25:7aae27772b0b 93 }
montse 25:7aae27772b0b 94 }
montse 25:7aae27772b0b 95
montse 25:7aae27772b0b 96
montse 25:7aae27772b0b 97 if(x>=3.5){
montse 25:7aae27772b0b 98
montse 25:7aae27772b0b 99 int valida = 8569;
montse 25:7aae27772b0b 100 int clave;
montse 25:7aae27772b0b 101 int intentos;
montse 25:7aae27772b0b 102
montse 25:7aae27772b0b 103
montse 25:7aae27772b0b 104 lcd.cls();
montse 25:7aae27772b0b 105 lcd.locate(1,1);
montse 25:7aae27772b0b 106 lcd.printf( "Introduzca su clave: ");
montse 25:7aae27772b0b 107 wait(1);
montse 25:7aae27772b0b 108 scanf("%i", &clave) ;
montse 25:7aae27772b0b 109 wait(1);
montse 25:7aae27772b0b 110
montse 25:7aae27772b0b 111 if(clave != valida) {
montse 25:7aae27772b0b 112 lcd.cls();
montse 25:7aae27772b0b 113 lcd.locate(1,1);
montse 25:7aae27772b0b 114 lcd.printf("No valida!");
montse 25:7aae27772b0b 115 lcd.copy_to_lcd();
montse 25:7aae27772b0b 116
montse 25:7aae27772b0b 117 play_tone(125.0, 0.5, 1, 2);
montse 25:7aae27772b0b 118 play_tone(125.0, 0.5, 1, 2);
montse 25:7aae27772b0b 119 L1 = 1;
montse 25:7aae27772b0b 120 wait(0.3);
montse 25:7aae27772b0b 121 L1 = 0;
montse 25:7aae27772b0b 122 wait(0.3);
montse 25:7aae27772b0b 123 L1 = 1;
montse 25:7aae27772b0b 124 wait(0.3);
montse 25:7aae27772b0b 125 L1 = 0;
montse 25:7aae27772b0b 126 wait(0.3);
montse 25:7aae27772b0b 127 L1 = 1;
montse 25:7aae27772b0b 128 wait(0.3);
montse 25:7aae27772b0b 129 L1 = 0;
montse 25:7aae27772b0b 130 lcd.cls();
montse 25:7aae27772b0b 131 clave=0;
montse 25:7aae27772b0b 132 intentos++;
montse 25:7aae27772b0b 133 if(intentos==3){
montse 25:7aae27772b0b 134 int p=0;
montse 25:7aae27772b0b 135 for (p; p<10; p++){
montse 25:7aae27772b0b 136 lcd.cls();
montse 25:7aae27772b0b 137 lcd.locate(1,1);
montse 25:7aae27772b0b 138 lcd.printf("Sistema bloqueado %d", p);
montse 25:7aae27772b0b 139 lcd.copy_to_lcd();
montse 25:7aae27772b0b 140 play_tone(125.0, 0.5, 1, 0.5);
montse 25:7aae27772b0b 141 play_tone(800.0, 0.5, 1, 0.5);
montse 25:7aae27772b0b 142 play_tone(125.0, 0.5, 1, 0.5);
montse 25:7aae27772b0b 143 }
montse 25:7aae27772b0b 144 }
montse 25:7aae27772b0b 145 }
montse 25:7aae27772b0b 146
montse 25:7aae27772b0b 147 if (clave == valida){
montse 25:7aae27772b0b 148 lcd.cls();
montse 25:7aae27772b0b 149 lcd.locate(1,1);
montse 25:7aae27772b0b 150 lcd.printf("Aceptada.");
montse 25:7aae27772b0b 151 lcd.locate(1,15);
montse 25:7aae27772b0b 152 lcd.printf("Abriendo compuerta...");
montse 25:7aae27772b0b 153 play_tone(800.0, 0.5, 0.7, 1);
montse 25:7aae27772b0b 154 L2 = 1;
montse 25:7aae27772b0b 155 L3 = 1;
montse 25:7aae27772b0b 156 wait(0.3);
montse 25:7aae27772b0b 157 L2 = 0;
montse 25:7aae27772b0b 158 wait(0.3);
montse 25:7aae27772b0b 159 L2 = 1;
montse 25:7aae27772b0b 160 wait(0.3);
montse 25:7aae27772b0b 161 L2 = 0;
montse 25:7aae27772b0b 162 wait(0.3);
montse 25:7aae27772b0b 163 L2 = 1;
montse 25:7aae27772b0b 164 wait(0.3);
montse 25:7aae27772b0b 165 L2 = 0;
montse 25:7aae27772b0b 166 wait(15);
montse 25:7aae27772b0b 167 L3 = 0;
montse 25:7aae27772b0b 168 Abrir:
montse 25:7aae27772b0b 169 lcd.cls();
montse 25:7aae27772b0b 170 lcd.locate(20,1);
montse 25:7aae27772b0b 171 lcd.printf("Compuerta abierta");
montse 25:7aae27772b0b 172 lcd.locate(1,10);
montse 25:7aae27772b0b 173 lcd.printf( "Introduzca su clave");
montse 25:7aae27772b0b 174 lcd.locate(1,20);
montse 25:7aae27772b0b 175 lcd.printf( "para cerrar");
montse 25:7aae27772b0b 176 wait(1);
montse 25:7aae27772b0b 177 scanf("%i", &clave) ;
montse 25:7aae27772b0b 178 wait(1);
montse 25:7aae27772b0b 179 if (clave == valida){
montse 25:7aae27772b0b 180 lcd.cls();
montse 25:7aae27772b0b 181 lcd.locate(1,1);
montse 25:7aae27772b0b 182 lcd.printf("Aceptada.");
montse 25:7aae27772b0b 183 lcd.locate(1,15);
montse 25:7aae27772b0b 184 lcd.printf("Cerrando...");
montse 25:7aae27772b0b 185 play_tone(800.0, 0.5, 0.7, 1);
montse 25:7aae27772b0b 186 L2 = 1;
montse 25:7aae27772b0b 187 L3 = 1;
montse 25:7aae27772b0b 188 wait(0.3);
montse 25:7aae27772b0b 189 L2 = 0;
montse 25:7aae27772b0b 190 wait(0.3);
montse 25:7aae27772b0b 191 L2 = 1;
montse 25:7aae27772b0b 192 wait(0.3);
montse 25:7aae27772b0b 193 L2 = 0;
montse 25:7aae27772b0b 194 wait(0.3);
montse 25:7aae27772b0b 195 L2 = 1;
montse 25:7aae27772b0b 196 wait(0.3);
montse 25:7aae27772b0b 197 L2 = 0;
montse 25:7aae27772b0b 198 wait(15);
montse 25:7aae27772b0b 199 L3 = 0;
montse 25:7aae27772b0b 200 lcd.cls();
montse 25:7aae27772b0b 201 lcd.locate(20,5);
montse 25:7aae27772b0b 202 lcd.printf("Compuerta cerrada");
montse 25:7aae27772b0b 203 wait(3);
montse 25:7aae27772b0b 204 }
montse 25:7aae27772b0b 205 else{
montse 25:7aae27772b0b 206 lcd.cls();
montse 25:7aae27772b0b 207 lcd.locate(10,1);
montse 25:7aae27772b0b 208 lcd.printf("Incorrecto Vuelva");
montse 25:7aae27772b0b 209 lcd.locate(10,10);
montse 25:7aae27772b0b 210 lcd.printf(" a intentarlo");
montse 25:7aae27772b0b 211 wait(3);
montse 25:7aae27772b0b 212 goto Abrir;
montse 25:7aae27772b0b 213 }
montse 25:7aae27772b0b 214 }
montse 25:7aae27772b0b 215
stevep 4:81cea7a352b0 216 }
dan 0:7dec7e9ac085 217 }
montse 25:7aae27772b0b 218 }