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@25:7aae27772b0b, 2020-06-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |