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@0:1c73bfda913b, 2015-07-28 (annotated)
- Committer:
- migramdel1
- Date:
- Tue Jul 28 15:11:22 2015 +0000
- Revision:
- 0:1c73bfda913b
Master1
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| migramdel1 | 0:1c73bfda913b | 1 | #include "mbed.h" |
| migramdel1 | 0:1c73bfda913b | 2 | #include "TextLCD.h" |
| migramdel1 | 0:1c73bfda913b | 3 | |
| migramdel1 | 0:1c73bfda913b | 4 | Serial slave1(PA_11, PA_12); |
| migramdel1 | 0:1c73bfda913b | 5 | Serial slave2(PA_15, PB_7); |
| migramdel1 | 0:1c73bfda913b | 6 | Serial bluetooth(PA_2, PA_3); |
| migramdel1 | 0:1c73bfda913b | 7 | |
| migramdel1 | 0:1c73bfda913b | 8 | AnalogIn boton_LCD(A0); |
| migramdel1 | 0:1c73bfda913b | 9 | DigitalIn mov(D2); |
| migramdel1 | 0:1c73bfda913b | 10 | |
| migramdel1 | 0:1c73bfda913b | 11 | Ticker lcdTimer, movTimer, sendTimer,alarmDatos; |
| migramdel1 | 0:1c73bfda913b | 12 | |
| migramdel1 | 0:1c73bfda913b | 13 | TextLCD lcd = TextLCD(D8, D9, D4, D5, D6, D7, TextLCD::LCD16x2); |
| migramdel1 | 0:1c73bfda913b | 14 | |
| migramdel1 | 0:1c73bfda913b | 15 | float key_value[6] = {0.05, 0.25, 0.45, 0.70, 0.85, 0.95}; |
| migramdel1 | 0:1c73bfda913b | 16 | int NUM_KEYS = 6; |
| migramdel1 | 0:1c73bfda913b | 17 | float key_in; |
| migramdel1 | 0:1c73bfda913b | 18 | int key = -1; |
| migramdel1 | 0:1c73bfda913b | 19 | int x = 0; |
| migramdel1 | 0:1c73bfda913b | 20 | char caracterActual = 'Z'; |
| migramdel1 | 0:1c73bfda913b | 21 | char password[8] = "AAAA"; |
| migramdel1 | 0:1c73bfda913b | 22 | char enterPassword [8]; |
| migramdel1 | 0:1c73bfda913b | 23 | int alarm = 0; |
| migramdel1 | 0:1c73bfda913b | 24 | |
| migramdel1 | 0:1c73bfda913b | 25 | |
| migramdel1 | 0:1c73bfda913b | 26 | int get_boton(float input); |
| migramdel1 | 0:1c73bfda913b | 27 | void lcd_control(); |
| migramdel1 | 0:1c73bfda913b | 28 | int get_movimiento(); |
| migramdel1 | 0:1c73bfda913b | 29 | void sendData(); //Ver como se hace y el readData |
| migramdel1 | 0:1c73bfda913b | 30 | |
| migramdel1 | 0:1c73bfda913b | 31 | |
| migramdel1 | 0:1c73bfda913b | 32 | void sendData(){ |
| migramdel1 | 0:1c73bfda913b | 33 | char bufferSlave1[64]; |
| migramdel1 | 0:1c73bfda913b | 34 | char bufferSlave2[64]; |
| migramdel1 | 0:1c73bfda913b | 35 | char bufferTotal[128]; |
| migramdel1 | 0:1c73bfda913b | 36 | |
| migramdel1 | 0:1c73bfda913b | 37 | if(slave1.readable()){ |
| migramdel1 | 0:1c73bfda913b | 38 | slave1.gets(bufferSlave1,64); |
| migramdel1 | 0:1c73bfda913b | 39 | } |
| migramdel1 | 0:1c73bfda913b | 40 | if(slave2.readable()){ |
| migramdel1 | 0:1c73bfda913b | 41 | slave2.gets(bufferSlave2,64); |
| migramdel1 | 0:1c73bfda913b | 42 | } |
| migramdel1 | 0:1c73bfda913b | 43 | strncpy(bufferTotal, bufferSlave1, sizeof(bufferSlave1)); |
| migramdel1 | 0:1c73bfda913b | 44 | strncat(bufferTotal, bufferSlave2,sizeof(bufferSlave2)); |
| migramdel1 | 0:1c73bfda913b | 45 | |
| migramdel1 | 0:1c73bfda913b | 46 | wait(0.2f); |
| migramdel1 | 0:1c73bfda913b | 47 | if(bluetooth.writeable()){ |
| migramdel1 | 0:1c73bfda913b | 48 | bluetooth.printf("%s",bufferTotal); |
| migramdel1 | 0:1c73bfda913b | 49 | } |
| migramdel1 | 0:1c73bfda913b | 50 | } |
| migramdel1 | 0:1c73bfda913b | 51 | |
| migramdel1 | 0:1c73bfda913b | 52 | void sendAlarm(){ |
| migramdel1 | 0:1c73bfda913b | 53 | if(slave1.writeable()){ |
| migramdel1 | 0:1c73bfda913b | 54 | if(alarm == 1){ |
| migramdel1 | 0:1c73bfda913b | 55 | slave1.putc('A'); |
| migramdel1 | 0:1c73bfda913b | 56 | wait(0.2); |
| migramdel1 | 0:1c73bfda913b | 57 | if(mov.read() == 1){ |
| migramdel1 | 0:1c73bfda913b | 58 | slave1.putc('3'); |
| migramdel1 | 0:1c73bfda913b | 59 | } |
| migramdel1 | 0:1c73bfda913b | 60 | }else if(alarm == 0){ |
| migramdel1 | 0:1c73bfda913b | 61 | slave1.putc('N'); |
| migramdel1 | 0:1c73bfda913b | 62 | } |
| migramdel1 | 0:1c73bfda913b | 63 | } |
| migramdel1 | 0:1c73bfda913b | 64 | } |
| migramdel1 | 0:1c73bfda913b | 65 | |
| migramdel1 | 0:1c73bfda913b | 66 | int get_boton(float input){ //Metodo para obtener el boton pulsado en función del valor |
| migramdel1 | 0:1c73bfda913b | 67 | |
| migramdel1 | 0:1c73bfda913b | 68 | int k; |
| migramdel1 | 0:1c73bfda913b | 69 | if (input > key_value[5]) k = -1; //Error en la lectura |
| migramdel1 | 0:1c73bfda913b | 70 | |
| migramdel1 | 0:1c73bfda913b | 71 | else { |
| migramdel1 | 0:1c73bfda913b | 72 | for (k=0; k<NUM_KEYS; k++){ |
| migramdel1 | 0:1c73bfda913b | 73 | if(input < key_value[k]) return k; |
| migramdel1 | 0:1c73bfda913b | 74 | } |
| migramdel1 | 0:1c73bfda913b | 75 | } |
| migramdel1 | 0:1c73bfda913b | 76 | return k; |
| migramdel1 | 0:1c73bfda913b | 77 | } |
| migramdel1 | 0:1c73bfda913b | 78 | |
| migramdel1 | 0:1c73bfda913b | 79 | void lcd_control(){ |
| migramdel1 | 0:1c73bfda913b | 80 | int i; |
| migramdel1 | 0:1c73bfda913b | 81 | wait(0.2); |
| migramdel1 | 0:1c73bfda913b | 82 | key_in = boton_LCD.read(); |
| migramdel1 | 0:1c73bfda913b | 83 | key = get_boton(key_in); |
| migramdel1 | 0:1c73bfda913b | 84 | |
| migramdel1 | 0:1c73bfda913b | 85 | lcd.locate(x,1); |
| migramdel1 | 0:1c73bfda913b | 86 | |
| migramdel1 | 0:1c73bfda913b | 87 | if( key == 0){ //Tecla rigth |
| migramdel1 | 0:1c73bfda913b | 88 | enterPassword[x] = caracterActual; |
| migramdel1 | 0:1c73bfda913b | 89 | x++; |
| migramdel1 | 0:1c73bfda913b | 90 | if(x > 15) x=15; |
| migramdel1 | 0:1c73bfda913b | 91 | lcd.locate(x,1); |
| migramdel1 | 0:1c73bfda913b | 92 | caracterActual = 'A'; |
| migramdel1 | 0:1c73bfda913b | 93 | lcd.printf("%c",caracterActual); |
| migramdel1 | 0:1c73bfda913b | 94 | |
| migramdel1 | 0:1c73bfda913b | 95 | } |
| migramdel1 | 0:1c73bfda913b | 96 | if ( key == 1){ //Tecla up |
| migramdel1 | 0:1c73bfda913b | 97 | caracterActual++; |
| migramdel1 | 0:1c73bfda913b | 98 | if(caracterActual > 'Z') caracterActual = 'A'; |
| migramdel1 | 0:1c73bfda913b | 99 | //pc.printf(caracterActual); |
| migramdel1 | 0:1c73bfda913b | 100 | lcd.printf("%c",caracterActual); |
| migramdel1 | 0:1c73bfda913b | 101 | } |
| migramdel1 | 0:1c73bfda913b | 102 | if(key == 2) { //Tecla down |
| migramdel1 | 0:1c73bfda913b | 103 | caracterActual--; |
| migramdel1 | 0:1c73bfda913b | 104 | if(caracterActual < 'A') caracterActual = 'Z'; |
| migramdel1 | 0:1c73bfda913b | 105 | //pc.printf(caracterActual); |
| migramdel1 | 0:1c73bfda913b | 106 | lcd.printf("%c",caracterActual); |
| migramdel1 | 0:1c73bfda913b | 107 | } |
| migramdel1 | 0:1c73bfda913b | 108 | if(key == 3) { //Tecla left |
| migramdel1 | 0:1c73bfda913b | 109 | x--; |
| migramdel1 | 0:1c73bfda913b | 110 | if (x<0) x = 0; |
| migramdel1 | 0:1c73bfda913b | 111 | caracterActual = 'Z'; |
| migramdel1 | 0:1c73bfda913b | 112 | } |
| migramdel1 | 0:1c73bfda913b | 113 | if(key == 5){ //Tecla select |
| migramdel1 | 0:1c73bfda913b | 114 | enterPassword[x] = caracterActual; |
| migramdel1 | 0:1c73bfda913b | 115 | x = 0; |
| migramdel1 | 0:1c73bfda913b | 116 | |
| migramdel1 | 0:1c73bfda913b | 117 | if(alarm == 0){ |
| migramdel1 | 0:1c73bfda913b | 118 | if(strcmp(password,enterPassword) == 0){ |
| migramdel1 | 0:1c73bfda913b | 119 | alarm = 1; |
| migramdel1 | 0:1c73bfda913b | 120 | lcd.cls(); |
| migramdel1 | 0:1c73bfda913b | 121 | lcd.locate(0,0); |
| migramdel1 | 0:1c73bfda913b | 122 | lcd.printf("Alarma Activada"); |
| migramdel1 | 0:1c73bfda913b | 123 | lcd.locate(0,1); |
| migramdel1 | 0:1c73bfda913b | 124 | }else{ |
| migramdel1 | 0:1c73bfda913b | 125 | lcd.cls(); |
| migramdel1 | 0:1c73bfda913b | 126 | lcd.locate(0,0); |
| migramdel1 | 0:1c73bfda913b | 127 | lcd.printf("Pass incorrect"); |
| migramdel1 | 0:1c73bfda913b | 128 | lcd.locate(0,1); |
| migramdel1 | 0:1c73bfda913b | 129 | } |
| migramdel1 | 0:1c73bfda913b | 130 | }else{ |
| migramdel1 | 0:1c73bfda913b | 131 | if(strcmp(password,enterPassword) == 0){ |
| migramdel1 | 0:1c73bfda913b | 132 | alarm = 0; |
| migramdel1 | 0:1c73bfda913b | 133 | lcd.cls(); |
| migramdel1 | 0:1c73bfda913b | 134 | lcd.locate(0,0); |
| migramdel1 | 0:1c73bfda913b | 135 | lcd.printf("Alarma Desact"); |
| migramdel1 | 0:1c73bfda913b | 136 | lcd.locate(0,1); |
| migramdel1 | 0:1c73bfda913b | 137 | }else{ |
| migramdel1 | 0:1c73bfda913b | 138 | lcd.cls(); |
| migramdel1 | 0:1c73bfda913b | 139 | lcd.locate(0,0); |
| migramdel1 | 0:1c73bfda913b | 140 | lcd.printf("Pass incorrect"); |
| migramdel1 | 0:1c73bfda913b | 141 | lcd.locate(0,1); |
| migramdel1 | 0:1c73bfda913b | 142 | } |
| migramdel1 | 0:1c73bfda913b | 143 | } |
| migramdel1 | 0:1c73bfda913b | 144 | for(i=0; i<8; i++){ |
| migramdel1 | 0:1c73bfda913b | 145 | enterPassword[i] = (char)0; |
| migramdel1 | 0:1c73bfda913b | 146 | } |
| migramdel1 | 0:1c73bfda913b | 147 | } |
| migramdel1 | 0:1c73bfda913b | 148 | } |
| migramdel1 | 0:1c73bfda913b | 149 | |
| migramdel1 | 0:1c73bfda913b | 150 | int main(){ |
| migramdel1 | 0:1c73bfda913b | 151 | lcd.locate(0,0); |
| migramdel1 | 0:1c73bfda913b | 152 | lcd.printf("Enter password"); |
| migramdel1 | 0:1c73bfda913b | 153 | float movimiento; |
| migramdel1 | 0:1c73bfda913b | 154 | while(1){ |
| migramdel1 | 0:1c73bfda913b | 155 | lcdTimer.attach(&lcd_control,0.5f); |
| migramdel1 | 0:1c73bfda913b | 156 | sendTimer.attach(&sendData, 1.0f); |
| migramdel1 | 0:1c73bfda913b | 157 | alarmDatos.attach(&sendAlarm, 0.5f); |
| migramdel1 | 0:1c73bfda913b | 158 | wait(1.0f); |
| migramdel1 | 0:1c73bfda913b | 159 | } |
| migramdel1 | 0:1c73bfda913b | 160 | } |