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@1:dfa13453f7d2, 2019-05-31 (annotated)
- Committer:
- JulioDLuna
- Date:
- Fri May 31 01:42:15 2019 +0000
- Revision:
- 1:dfa13453f7d2
- Parent:
- 0:9f1d9b302ed4
Puerta al 100, mensajes sin basura
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JulioDLuna | 0:9f1d9b302ed4 | 1 | /* ########################################################################### |
JulioDLuna | 0:9f1d9b302ed4 | 2 | ** Archivo : main.c |
JulioDLuna | 0:9f1d9b302ed4 | 3 | ** Proyecto : FRDM-KL46Z_Proyecto Ensamblado Baño Automático |
JulioDLuna | 0:9f1d9b302ed4 | 4 | ** Procesador : MKL46Z256VLL4 |
JulioDLuna | 0:9f1d9b302ed4 | 5 | ** Herramienta : Mbed |
JulioDLuna | 0:9f1d9b302ed4 | 6 | ** Version : Driver 01.01 |
JulioDLuna | 0:9f1d9b302ed4 | 7 | ** Compilador : GNU C Compiler |
JulioDLuna | 0:9f1d9b302ed4 | 8 | ** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0 |
JulioDLuna | 0:9f1d9b302ed4 | 9 | ** Descripción : |
JulioDLuna | 0:9f1d9b302ed4 | 10 | ** Componentes : GPIO, Timer, etc . |
JulioDLuna | 0:9f1d9b302ed4 | 11 | ** Configuraciones : Includes, Stacks y Drivers externos |
JulioDLuna | 0:9f1d9b302ed4 | 12 | ** Autores : |
JulioDLuna | 0:9f1d9b302ed4 | 13 | ** ATEAM Development Group: |
JulioDLuna | 0:9f1d9b302ed4 | 14 | Camacho Camacho Fermín Rodrigo |
JulioDLuna | 0:9f1d9b302ed4 | 15 | Luna Villanueva Julio Daniel |
JulioDLuna | 0:9f1d9b302ed4 | 16 | Sánchez Zarazua Edgar Omar |
JulioDLuna | 0:9f1d9b302ed4 | 17 | ** - |
JulioDLuna | 0:9f1d9b302ed4 | 18 | ** |
JulioDLuna | 0:9f1d9b302ed4 | 19 | ** Versión : Beta |
JulioDLuna | 0:9f1d9b302ed4 | 20 | ** Revisión : A |
JulioDLuna | 0:9f1d9b302ed4 | 21 | ** Release : 0 |
JulioDLuna | 0:9f1d9b302ed4 | 22 | ** Bugs & Fixes : |
JulioDLuna | 0:9f1d9b302ed4 | 23 | ** Date : 20/10/2019 |
JulioDLuna | 0:9f1d9b302ed4 | 24 | ** Added support for Led_RGB |
JulioDLuna | 0:9f1d9b302ed4 | 25 | ** 22/09/2018 |
JulioDLuna | 0:9f1d9b302ed4 | 26 | ** Added LCD Menu, Beta version (with bugs) |
JulioDLuna | 0:9f1d9b302ed4 | 27 | ** |
JulioDLuna | 0:9f1d9b302ed4 | 28 | ** ###########################################################################*/ |
JulioDLuna | 0:9f1d9b302ed4 | 29 | /* |
JulioDLuna | 0:9f1d9b302ed4 | 30 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
JulioDLuna | 0:9f1d9b302ed4 | 31 | : Includes |
JulioDLuna | 0:9f1d9b302ed4 | 32 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
JulioDLuna | 0:9f1d9b302ed4 | 33 | */ |
JulioDLuna | 0:9f1d9b302ed4 | 34 | #include "mbed.h" |
JulioDLuna | 0:9f1d9b302ed4 | 35 | |
JulioDLuna | 0:9f1d9b302ed4 | 36 | /* |
JulioDLuna | 0:9f1d9b302ed4 | 37 | :............................................................................... |
JulioDLuna | 0:9f1d9b302ed4 | 38 | : Definiciones |
JulioDLuna | 0:9f1d9b302ed4 | 39 | :............................................................................... |
JulioDLuna | 0:9f1d9b302ed4 | 40 | */ |
JulioDLuna | 1:dfa13453f7d2 | 41 | #define TRUE 1 |
JulioDLuna | 1:dfa13453f7d2 | 42 | #define FALSE 0 |
JulioDLuna | 1:dfa13453f7d2 | 43 | #define On 0 |
JulioDLuna | 1:dfa13453f7d2 | 44 | #define off 1 |
JulioDLuna | 0:9f1d9b302ed4 | 45 | #define hold 2 // Estado para boton mantenido |
JulioDLuna | 0:9f1d9b302ed4 | 46 | #define release 3 // Estado para boton liberado |
JulioDLuna | 0:9f1d9b302ed4 | 47 | #define Ticker_Time 1000 // Tiempo del Ticker (us) |
JulioDLuna | 0:9f1d9b302ed4 | 48 | #define Rate_Time 2 // Tiempo de Encendido de los Digitos (ms) |
JulioDLuna | 0:9f1d9b302ed4 | 49 | #define Scan_Time 2 // Tiempo de Barrido del Display (ms) |
JulioDLuna | 0:9f1d9b302ed4 | 50 | #define Shift_Time 2 // Tiempo de corrimiento (x Counter_Time) |
JulioDLuna | 0:9f1d9b302ed4 | 51 | #define Counter_Time 100 // Tiempo de counter (ms) |
JulioDLuna | 1:dfa13453f7d2 | 52 | #define Size_String 13 // Tamaño del Buffer de Caracteres |
JulioDLuna | 0:9f1d9b302ed4 | 53 | #define Digit_Null 0xFF // Valor para apagar los Segmentos |
JulioDLuna | 0:9f1d9b302ed4 | 54 | #define Degree_Symbol 0x0F // Valor para el Símbolo de Grados |
JulioDLuna | 0:9f1d9b302ed4 | 55 | /* |
JulioDLuna | 0:9f1d9b302ed4 | 56 | +------------------------------------------------------------------------------- |
JulioDLuna | 0:9f1d9b302ed4 | 57 | | Configuración de Puertos |
JulioDLuna | 0:9f1d9b302ed4 | 58 | +------------------------------------------------------------------------------- |
JulioDLuna | 0:9f1d9b302ed4 | 59 | */ |
JulioDLuna | 0:9f1d9b302ed4 | 60 | Ticker Barrido; // Interrupción del Timer |
JulioDLuna | 0:9f1d9b302ed4 | 61 | BusOut Anodos(PTA14, PTA15, PTA16, PTA17); // Salidas a los anodos del display: A4 A3 A2 A1 |
JulioDLuna | 0:9f1d9b302ed4 | 62 | BusOut Catodos(PTE16, PTE17, PTE18, PTE19, PTE20, PTE21, PTE22, PTE23); // Salidas a los catodos: g f a b c d e p |
JulioDLuna | 0:9f1d9b302ed4 | 63 | DigitalOut Green_Led (PTD5); // Led de Actividad del Programa |
JulioDLuna | 0:9f1d9b302ed4 | 64 | DigitalOut Red_Led (PTE29); // Led de Actividad del Programa |
JulioDLuna | 0:9f1d9b302ed4 | 65 | |
JulioDLuna | 0:9f1d9b302ed4 | 66 | DigitalIn Selector_seguro(PTD3); |
JulioDLuna | 0:9f1d9b302ed4 | 67 | DigitalIn Limit_switch(PTB20); |
JulioDLuna | 0:9f1d9b302ed4 | 68 | DigitalOut Ventilador(PTD4); //Relé |
JulioDLuna | 0:9f1d9b302ed4 | 69 | DigitalOut Luz(PTD7); //Relé |
JulioDLuna | 0:9f1d9b302ed4 | 70 | DigitalOut Seguro(PTD6); //Relé |
JulioDLuna | 0:9f1d9b302ed4 | 71 | DigitalOut Red(PTE6); |
JulioDLuna | 0:9f1d9b302ed4 | 72 | DigitalOut Green(PTE3); |
JulioDLuna | 0:9f1d9b302ed4 | 73 | DigitalOut Blue(PTE2); |
JulioDLuna | 0:9f1d9b302ed4 | 74 | DigitalOut Buzzer(PTE31); |
JulioDLuna | 0:9f1d9b302ed4 | 75 | |
JulioDLuna | 0:9f1d9b302ed4 | 76 | /* |
JulioDLuna | 0:9f1d9b302ed4 | 77 | +------------------------------------------------------------------------------- |
JulioDLuna | 0:9f1d9b302ed4 | 78 | | Variables Globales de Usuario |
JulioDLuna | 0:9f1d9b302ed4 | 79 | +------------------------------------------------------------------------------- |
JulioDLuna | 0:9f1d9b302ed4 | 80 | */ |
JulioDLuna | 1:dfa13453f7d2 | 81 | uint16_t Rate=340; // 1000us=1ms |
JulioDLuna | 0:9f1d9b302ed4 | 82 | uint8_t cont_1ms=0; |
JulioDLuna | 0:9f1d9b302ed4 | 83 | uint8_t cont_10ms=0; |
JulioDLuna | 0:9f1d9b302ed4 | 84 | uint8_t cont_100ms=0; |
JulioDLuna | 0:9f1d9b302ed4 | 85 | uint8_t cont_1s=0; |
JulioDLuna | 0:9f1d9b302ed4 | 86 | bool Flag1=FALSE; |
JulioDLuna | 1:dfa13453f7d2 | 87 | bool Flag2=FALSE; |
JulioDLuna | 0:9f1d9b302ed4 | 88 | |
JulioDLuna | 0:9f1d9b302ed4 | 89 | //Para el DISPLAY de 7 segmentos: |
JulioDLuna | 0:9f1d9b302ed4 | 90 | /*Para CATODO COMUN: |
JulioDLuna | 0:9f1d9b302ed4 | 91 | // 0 1 2 3 4 5 6 7 8 9 A b C d E f G h I j K L M n o p q r S t u v w X y z |
JulioDLuna | 0:9f1d9b302ed4 | 92 | //uint8_t Segmentos[]={0x7F,0x18,0xB6,0xBC,0xD8,0xEC,0xEE,0x38,0xFE,0xFC,0xFA,0xCE,0x66,0x9E,0xE6,0xE2,0x6E,0xCA,0x42,0x1C,0xD2,0x46,0x7A,0x8A,0x8E,0xF2,0xF8,0xC2,0xEC,0xC6,0x0E,0x1E,0x5E,0xDA,0xC8,0xB6}; |
JulioDLuna | 0:9f1d9b302ed4 | 93 | // Millares,Centenas,Decenas,Unidades |
JulioDLuna | 0:9f1d9b302ed4 | 94 | //uint8_t Digitos[]={0x0E, 0x0D, 0x0B, 0x07}; |
JulioDLuna | 0:9f1d9b302ed4 | 95 | // Para descomponer el valor en multiplos |
JulioDLuna | 0:9f1d9b302ed4 | 96 | //Multiplos[]={Millares,Centenas,Decenas,Unidades} |
JulioDLuna | 0:9f1d9b302ed4 | 97 | Utilizar C.I. 74LS126 como Latch para c/u de los segmentos del Display*/ |
JulioDLuna | 0:9f1d9b302ed4 | 98 | |
JulioDLuna | 0:9f1d9b302ed4 | 99 | |
JulioDLuna | 0:9f1d9b302ed4 | 100 | //Para ANODO COMUN: |
JulioDLuna | 0:9f1d9b302ed4 | 101 | // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
JulioDLuna | 0:9f1d9b302ed4 | 102 | // 0 1 2 3 4 5 6 7 8 9 A b C d E f G h I j K L M n o p q r S t u v w X y z space - |
JulioDLuna | 0:9f1d9b302ed4 | 103 | uint8_t Segmentos[]={0x81,0xE7,0x49,0x43,0x27,0x13,0x11,0xC7,0x01,0x03,0x05,0x31,0x99,0x61,0x19,0x1D,0x91,0x35,0xBD,0xB3,0x2D,0xB9,0x85,0x75,0x71,0x0D,0x07,0x3D,0x13,0x39,0xF1,0xE1,0xA1,0x25,0x37,0x49,0xFF,0x7F}; |
JulioDLuna | 1:dfa13453f7d2 | 104 | // Millares,Centenas,Decenas,Unidades |
JulioDLuna | 0:9f1d9b302ed4 | 105 | uint8_t Digitos[]={0x01, 0x02, 0x04, 0x08, 0x00, 0xFF}; |
JulioDLuna | 0:9f1d9b302ed4 | 106 | // Para descomponer el valor en multiplos |
JulioDLuna | 0:9f1d9b302ed4 | 107 | //Multiplos[]={Millares,Centenas,Decenas,Unidades} |
JulioDLuna | 0:9f1d9b302ed4 | 108 | //Utilizar C.I. 74LS125 como Latch para c/u de los segmentos del Display |
JulioDLuna | 1:dfa13453f7d2 | 109 | uint8_t Mensaje1[]={36,36,24,12,30,25,10,13,24,36,36,36,36}; // MENSAJE " Ocupado " |
JulioDLuna | 1:dfa13453f7d2 | 110 | uint8_t Mensaje2[]={36,36,13,18,28,25,24,23,18,11,21,14,36}; // MENSAJE " Disponible " |
JulioDLuna | 1:dfa13453f7d2 | 111 | uint8_t Mensaje3[]={36,36,11,18,14,23,31,14,23,18,13,24,36}; // MENSAJE " Bienvenido " |
JulioDLuna | 1:dfa13453f7d2 | 112 | uint8_t Numeros[]={36,36,36,36,36,11,10,23,24,36,36,36,36}; //MENSAJE INICIAL " Bano " |
JulioDLuna | 1:dfa13453f7d2 | 113 | uint8_t Cadena[]={36,11,18,14,23,31,14,23,18,13,24,36,36}; //BUFFER " Bienvenidos " |
JulioDLuna | 0:9f1d9b302ed4 | 114 | uint8_t scan_rate = Scan_Time ; |
JulioDLuna | 0:9f1d9b302ed4 | 115 | uint8_t shift_rate= Shift_Time; |
JulioDLuna | 0:9f1d9b302ed4 | 116 | uint16_t counter=1250; |
JulioDLuna | 0:9f1d9b302ed4 | 117 | uint8_t i=0; |
JulioDLuna | 0:9f1d9b302ed4 | 118 | uint8_t nchar=0; |
JulioDLuna | 0:9f1d9b302ed4 | 119 | bool flag1=FALSE; |
JulioDLuna | 0:9f1d9b302ed4 | 120 | bool flag2=FALSE; |
JulioDLuna | 0:9f1d9b302ed4 | 121 | bool mode=0; |
JulioDLuna | 0:9f1d9b302ed4 | 122 | uint8_t punto_decimal=0; //Posición del Punto Decimal: 0=sin punto, 1=unidades, 2=decenas, 3=centemas 4=millares, |
JulioDLuna | 0:9f1d9b302ed4 | 123 | uint8_t control=0; |
JulioDLuna | 0:9f1d9b302ed4 | 124 | /* |
JulioDLuna | 0:9f1d9b302ed4 | 125 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
JulioDLuna | 0:9f1d9b302ed4 | 126 | | Definición de los Vectores de Interrupción |
JulioDLuna | 0:9f1d9b302ed4 | 127 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
JulioDLuna | 0:9f1d9b302ed4 | 128 | */ |
JulioDLuna | 0:9f1d9b302ed4 | 129 | void Barrido_OnInterrupt(void); |
JulioDLuna | 0:9f1d9b302ed4 | 130 | /* |
JulioDLuna | 0:9f1d9b302ed4 | 131 | ________________________________________________________________________________ |
JulioDLuna | 0:9f1d9b302ed4 | 132 | | |
JulioDLuna | 0:9f1d9b302ed4 | 133 | | Funciones Prototipo |
JulioDLuna | 0:9f1d9b302ed4 | 134 | |_______________________________________________________________________________ |
JulioDLuna | 0:9f1d9b302ed4 | 135 | */ |
JulioDLuna | 0:9f1d9b302ed4 | 136 | // Las Funciones Prototipo van aquí ! |
JulioDLuna | 0:9f1d9b302ed4 | 137 | bool BanoDisponible(void); |
JulioDLuna | 0:9f1d9b302ed4 | 138 | bool BanoOcupado(void); |
JulioDLuna | 0:9f1d9b302ed4 | 139 | bool PuertaAbierta(void); |
JulioDLuna | 0:9f1d9b302ed4 | 140 | void Display(void); |
JulioDLuna | 0:9f1d9b302ed4 | 141 | void Mensaje(void); |
JulioDLuna | 0:9f1d9b302ed4 | 142 | /* |
JulioDLuna | 0:9f1d9b302ed4 | 143 | #=============================================================================== |
JulioDLuna | 0:9f1d9b302ed4 | 144 | | |
JulioDLuna | 0:9f1d9b302ed4 | 145 | | P R O G R A M A P R I N C I P A L |
JulioDLuna | 0:9f1d9b302ed4 | 146 | | |
JulioDLuna | 0:9f1d9b302ed4 | 147 | #=============================================================================== |
JulioDLuna | 0:9f1d9b302ed4 | 148 | */ |
JulioDLuna | 0:9f1d9b302ed4 | 149 | |
JulioDLuna | 0:9f1d9b302ed4 | 150 | ////////////////////////////// PROGRAMA PRINCIPAL ////////////////////////////////////////// |
JulioDLuna | 0:9f1d9b302ed4 | 151 | int main() |
JulioDLuna | 0:9f1d9b302ed4 | 152 | { |
JulioDLuna | 0:9f1d9b302ed4 | 153 | Buzzer=1; |
JulioDLuna | 0:9f1d9b302ed4 | 154 | wait(0.020); |
JulioDLuna | 0:9f1d9b302ed4 | 155 | Buzzer=0; |
JulioDLuna | 0:9f1d9b302ed4 | 156 | Red=0; |
JulioDLuna | 0:9f1d9b302ed4 | 157 | Blue=1; |
JulioDLuna | 0:9f1d9b302ed4 | 158 | Green=0; |
JulioDLuna | 0:9f1d9b302ed4 | 159 | wait(0.5); |
JulioDLuna | 0:9f1d9b302ed4 | 160 | Barrido.attach_us(&Barrido_OnInterrupt, Rate); // Le asigna el periodo de barrido cada 10 ms |
JulioDLuna | 0:9f1d9b302ed4 | 161 | while(true) |
JulioDLuna | 0:9f1d9b302ed4 | 162 | { |
JulioDLuna | 0:9f1d9b302ed4 | 163 | if(Limit_switch==1 && Selector_seguro==0) |
JulioDLuna | 0:9f1d9b302ed4 | 164 | { //Puerta Cerrada (BAÑO DISPONIBLE) |
JulioDLuna | 0:9f1d9b302ed4 | 165 | Seguro=0; //Seguro desactivado |
JulioDLuna | 0:9f1d9b302ed4 | 166 | BanoDisponible(); |
JulioDLuna | 0:9f1d9b302ed4 | 167 | } |
JulioDLuna | 0:9f1d9b302ed4 | 168 | if(Limit_switch==1 && Selector_seguro==1) |
JulioDLuna | 0:9f1d9b302ed4 | 169 | { //Puerta Cerrada (BAÑO OCUPADO) |
JulioDLuna | 0:9f1d9b302ed4 | 170 | Seguro=1; //Seguro activado |
JulioDLuna | 0:9f1d9b302ed4 | 171 | BanoOcupado(); |
JulioDLuna | 0:9f1d9b302ed4 | 172 | } |
JulioDLuna | 0:9f1d9b302ed4 | 173 | if(Limit_switch==0 && Selector_seguro==0) |
JulioDLuna | 0:9f1d9b302ed4 | 174 | { //Puerta Abierta |
JulioDLuna | 0:9f1d9b302ed4 | 175 | Seguro=0; //Desactivado |
JulioDLuna | 0:9f1d9b302ed4 | 176 | PuertaAbierta(); |
JulioDLuna | 0:9f1d9b302ed4 | 177 | } |
JulioDLuna | 0:9f1d9b302ed4 | 178 | // LLama al Barrido del Display |
JulioDLuna | 1:dfa13453f7d2 | 179 | Display(); |
JulioDLuna | 0:9f1d9b302ed4 | 180 | // END while |
JulioDLuna | 1:dfa13453f7d2 | 181 | } |
JulioDLuna | 0:9f1d9b302ed4 | 182 | } |
JulioDLuna | 0:9f1d9b302ed4 | 183 | // END main |
JulioDLuna | 0:9f1d9b302ed4 | 184 | |
JulioDLuna | 0:9f1d9b302ed4 | 185 | /* |
JulioDLuna | 0:9f1d9b302ed4 | 186 | ................................................................................ |
JulioDLuna | 0:9f1d9b302ed4 | 187 | : Rutinas de los Vectores de Interrupción |
JulioDLuna | 0:9f1d9b302ed4 | 188 | ................................................................................ |
JulioDLuna | 0:9f1d9b302ed4 | 189 | */ |
JulioDLuna | 0:9f1d9b302ed4 | 190 | void Barrido_OnInterrupt(void) // Rutina de Atención al Ticker |
JulioDLuna | 0:9f1d9b302ed4 | 191 | { //El servicio a la interrupcion van aqui! |
JulioDLuna | 0:9f1d9b302ed4 | 192 | cont_1ms++; |
JulioDLuna | 0:9f1d9b302ed4 | 193 | scan_rate++; |
JulioDLuna | 0:9f1d9b302ed4 | 194 | counter--; |
JulioDLuna | 0:9f1d9b302ed4 | 195 | if(scan_rate==4) |
JulioDLuna | 0:9f1d9b302ed4 | 196 | { |
JulioDLuna | 0:9f1d9b302ed4 | 197 | scan_rate=0; |
JulioDLuna | 0:9f1d9b302ed4 | 198 | flag1=TRUE; |
JulioDLuna | 0:9f1d9b302ed4 | 199 | } |
JulioDLuna | 0:9f1d9b302ed4 | 200 | if (cont_1ms>=10) |
JulioDLuna | 0:9f1d9b302ed4 | 201 | { |
JulioDLuna | 0:9f1d9b302ed4 | 202 | cont_10ms++; |
JulioDLuna | 0:9f1d9b302ed4 | 203 | cont_1ms=0; |
JulioDLuna | 0:9f1d9b302ed4 | 204 | } |
JulioDLuna | 0:9f1d9b302ed4 | 205 | if (cont_10ms>=10) |
JulioDLuna | 0:9f1d9b302ed4 | 206 | { |
JulioDLuna | 0:9f1d9b302ed4 | 207 | cont_100ms++; |
JulioDLuna | 0:9f1d9b302ed4 | 208 | cont_10ms=0; |
JulioDLuna | 0:9f1d9b302ed4 | 209 | } |
JulioDLuna | 0:9f1d9b302ed4 | 210 | if (cont_100ms>=10) |
JulioDLuna | 0:9f1d9b302ed4 | 211 | { |
JulioDLuna | 0:9f1d9b302ed4 | 212 | cont_1s++; |
JulioDLuna | 0:9f1d9b302ed4 | 213 | cont_100ms=0; |
JulioDLuna | 0:9f1d9b302ed4 | 214 | } |
JulioDLuna | 0:9f1d9b302ed4 | 215 | if (cont_1s>=10) |
JulioDLuna | 0:9f1d9b302ed4 | 216 | { |
JulioDLuna | 0:9f1d9b302ed4 | 217 | cont_1s=0; |
JulioDLuna | 0:9f1d9b302ed4 | 218 | } |
JulioDLuna | 0:9f1d9b302ed4 | 219 | if (!counter) |
JulioDLuna | 0:9f1d9b302ed4 | 220 | { |
JulioDLuna | 0:9f1d9b302ed4 | 221 | counter=300; |
JulioDLuna | 0:9f1d9b302ed4 | 222 | flag2=TRUE; |
JulioDLuna | 0:9f1d9b302ed4 | 223 | } |
JulioDLuna | 0:9f1d9b302ed4 | 224 | } |
JulioDLuna | 0:9f1d9b302ed4 | 225 | /* END Events */ // Rutinas de Atención a Interrupciones |
JulioDLuna | 0:9f1d9b302ed4 | 226 | |
JulioDLuna | 0:9f1d9b302ed4 | 227 | |
JulioDLuna | 0:9f1d9b302ed4 | 228 | ////////////////////////// BARRIDO DEL DISPLAY //////////////////////////////////// |
JulioDLuna | 0:9f1d9b302ed4 | 229 | void Display() |
JulioDLuna | 0:9f1d9b302ed4 | 230 | { |
JulioDLuna | 0:9f1d9b302ed4 | 231 | // Barrido del Display // |
JulioDLuna | 1:dfa13453f7d2 | 232 | if (flag1==TRUE) |
JulioDLuna | 1:dfa13453f7d2 | 233 | { |
JulioDLuna | 1:dfa13453f7d2 | 234 | if (mode==1) |
JulioDLuna | 1:dfa13453f7d2 | 235 | { |
JulioDLuna | 1:dfa13453f7d2 | 236 | Numeros[i]=Cadena[i+nchar]; // Aqui está el ptroblema!!!! |
JulioDLuna | 1:dfa13453f7d2 | 237 | if (nchar >= Size_String) nchar=0; // Restablece el contador de caractres |
JulioDLuna | 1:dfa13453f7d2 | 238 | if (i==4) |
JulioDLuna | 1:dfa13453f7d2 | 239 | { |
JulioDLuna | 1:dfa13453f7d2 | 240 | i=0; |
JulioDLuna | 1:dfa13453f7d2 | 241 | mode=0; // Nos vamos a modo 0 |
JulioDLuna | 1:dfa13453f7d2 | 242 | } |
JulioDLuna | 1:dfa13453f7d2 | 243 | } |
JulioDLuna | 1:dfa13453f7d2 | 244 | Anodos=Digitos[4]; // Apaga todos los Digitos (Evita fantasmas) |
JulioDLuna | 1:dfa13453f7d2 | 245 | Catodos=Segmentos[Numeros[i]]; // Actualiza los segmentos |
JulioDLuna | 1:dfa13453f7d2 | 246 | if (i==4) Catodos=(Segmentos[Numeros[i]]& 0xFE); // Enciende el punto decimal |
JulioDLuna | 1:dfa13453f7d2 | 247 | Anodos=Digitos[i]; // Activa el Digito en cuestión |
JulioDLuna | 1:dfa13453f7d2 | 248 | i++; // Apunta al siguiente dígito |
JulioDLuna | 1:dfa13453f7d2 | 249 | if (i==4) // Es el últino digito? |
JulioDLuna | 1:dfa13453f7d2 | 250 | { |
JulioDLuna | 1:dfa13453f7d2 | 251 | i=0; // Reinicia el Barriodo |
JulioDLuna | 1:dfa13453f7d2 | 252 | mode=0; // Nos vamos a modo 0 |
JulioDLuna | 1:dfa13453f7d2 | 253 | Red_Led=!Red_Led; // Parpadeo del Led Rojo |
JulioDLuna | 1:dfa13453f7d2 | 254 | } |
JulioDLuna | 1:dfa13453f7d2 | 255 | flag1=FALSE; // Apaga la Bandera 1 |
JulioDLuna | 1:dfa13453f7d2 | 256 | } |
JulioDLuna | 1:dfa13453f7d2 | 257 | if (flag2==TRUE) // Está puesta la Bandera 2? |
JulioDLuna | 1:dfa13453f7d2 | 258 | { |
JulioDLuna | 1:dfa13453f7d2 | 259 | shift_rate--; // Decrementa el contador de Corrimientos |
JulioDLuna | 1:dfa13453f7d2 | 260 | if (!shift_rate) // Es Cero? |
JulioDLuna | 1:dfa13453f7d2 | 261 | { |
JulioDLuna | 1:dfa13453f7d2 | 262 | mode=1; // Tiempo entre desplazamientos del mensaje |
JulioDLuna | 1:dfa13453f7d2 | 263 | shift_rate = Shift_Time; // Restablece el triempo de los corrimientos |
JulioDLuna | 1:dfa13453f7d2 | 264 | nchar++; // corrimiento al siguiente conjunto de de caracteres |
JulioDLuna | 1:dfa13453f7d2 | 265 | i=0; // Restablece el índice para comenzar el Barrido |
JulioDLuna | 1:dfa13453f7d2 | 266 | } |
JulioDLuna | 1:dfa13453f7d2 | 267 | Green_Led=!Green_Led; // Parpadeo del Led Verde |
JulioDLuna | 1:dfa13453f7d2 | 268 | flag2=FALSE; // Apaga la Bandera 2 |
JulioDLuna | 1:dfa13453f7d2 | 269 | } |
JulioDLuna | 1:dfa13453f7d2 | 270 | } |
JulioDLuna | 1:dfa13453f7d2 | 271 | |
JulioDLuna | 0:9f1d9b302ed4 | 272 | // End Display |
JulioDLuna | 0:9f1d9b302ed4 | 273 | |
JulioDLuna | 0:9f1d9b302ed4 | 274 | ////////////////////////// FUNCIONES ESTADO DEL BAÑO //////////////////////////////////// |
JulioDLuna | 0:9f1d9b302ed4 | 275 | bool BanoDisponible() |
JulioDLuna | 0:9f1d9b302ed4 | 276 | { |
JulioDLuna | 0:9f1d9b302ed4 | 277 | Luz=0; |
JulioDLuna | 0:9f1d9b302ed4 | 278 | Ventilador=0; //Luz y entilador apagados |
JulioDLuna | 0:9f1d9b302ed4 | 279 | Seguro=0; //Seguro desactivado |
JulioDLuna | 0:9f1d9b302ed4 | 280 | Green=0; |
JulioDLuna | 0:9f1d9b302ed4 | 281 | Red=1; |
JulioDLuna | 0:9f1d9b302ed4 | 282 | Blue=1; |
JulioDLuna | 0:9f1d9b302ed4 | 283 | control=2; |
JulioDLuna | 0:9f1d9b302ed4 | 284 | Mensaje(); |
JulioDLuna | 0:9f1d9b302ed4 | 285 | return true; |
JulioDLuna | 0:9f1d9b302ed4 | 286 | } |
JulioDLuna | 0:9f1d9b302ed4 | 287 | |
JulioDLuna | 0:9f1d9b302ed4 | 288 | bool BanoOcupado() |
JulioDLuna | 0:9f1d9b302ed4 | 289 | { |
JulioDLuna | 0:9f1d9b302ed4 | 290 | Luz=1; |
JulioDLuna | 0:9f1d9b302ed4 | 291 | Ventilador=1; //Luz y ventilador encendidos |
JulioDLuna | 0:9f1d9b302ed4 | 292 | Seguro=1; // Seguro Activado |
JulioDLuna | 0:9f1d9b302ed4 | 293 | Red=0; |
JulioDLuna | 0:9f1d9b302ed4 | 294 | Green=1; |
JulioDLuna | 0:9f1d9b302ed4 | 295 | Blue=1; |
JulioDLuna | 0:9f1d9b302ed4 | 296 | control=1; |
JulioDLuna | 0:9f1d9b302ed4 | 297 | Mensaje(); |
JulioDLuna | 0:9f1d9b302ed4 | 298 | return true; |
JulioDLuna | 0:9f1d9b302ed4 | 299 | } |
JulioDLuna | 0:9f1d9b302ed4 | 300 | |
JulioDLuna | 0:9f1d9b302ed4 | 301 | bool PuertaAbierta() |
JulioDLuna | 0:9f1d9b302ed4 | 302 | { |
JulioDLuna | 0:9f1d9b302ed4 | 303 | Luz=1; |
JulioDLuna | 0:9f1d9b302ed4 | 304 | Ventilador=1; |
JulioDLuna | 0:9f1d9b302ed4 | 305 | Green=1; |
JulioDLuna | 0:9f1d9b302ed4 | 306 | Red=0; |
JulioDLuna | 0:9f1d9b302ed4 | 307 | Blue=0; |
JulioDLuna | 0:9f1d9b302ed4 | 308 | control=3; |
JulioDLuna | 0:9f1d9b302ed4 | 309 | Mensaje(); |
JulioDLuna | 0:9f1d9b302ed4 | 310 | return true; |
JulioDLuna | 0:9f1d9b302ed4 | 311 | } |
JulioDLuna | 0:9f1d9b302ed4 | 312 | ////////////////////////// MENSAJES //////////////////////////////////// |
JulioDLuna | 0:9f1d9b302ed4 | 313 | void Mensaje() |
JulioDLuna | 0:9f1d9b302ed4 | 314 | { |
JulioDLuna | 0:9f1d9b302ed4 | 315 | //corrimiento de mensaje// |
JulioDLuna | 0:9f1d9b302ed4 | 316 | switch (control) |
JulioDLuna | 0:9f1d9b302ed4 | 317 | { |
JulioDLuna | 0:9f1d9b302ed4 | 318 | case 1: |
JulioDLuna | 0:9f1d9b302ed4 | 319 | for(uint8_t o=0;o<=13;o++){ |
JulioDLuna | 0:9f1d9b302ed4 | 320 | Cadena[o] = Mensaje1[o]; |
JulioDLuna | 0:9f1d9b302ed4 | 321 | } |
JulioDLuna | 0:9f1d9b302ed4 | 322 | break; |
JulioDLuna | 0:9f1d9b302ed4 | 323 | case 2: |
JulioDLuna | 0:9f1d9b302ed4 | 324 | for(uint8_t o=0;o<=13;o++){ |
JulioDLuna | 0:9f1d9b302ed4 | 325 | Cadena[o] = Mensaje2[o]; |
JulioDLuna | 0:9f1d9b302ed4 | 326 | } |
JulioDLuna | 0:9f1d9b302ed4 | 327 | break; |
JulioDLuna | 0:9f1d9b302ed4 | 328 | case 3: |
JulioDLuna | 0:9f1d9b302ed4 | 329 | for(uint8_t o=0;o<=13;o++){ |
JulioDLuna | 0:9f1d9b302ed4 | 330 | Cadena[o] = Mensaje3[o]; |
JulioDLuna | 0:9f1d9b302ed4 | 331 | } |
JulioDLuna | 0:9f1d9b302ed4 | 332 | break; |
JulioDLuna | 0:9f1d9b302ed4 | 333 | } |
JulioDLuna | 0:9f1d9b302ed4 | 334 | } |
JulioDLuna | 0:9f1d9b302ed4 | 335 | // END Mbed |