Andres Gaffs
/
TabletBrailleconTeclado
Tablet Braille con Teclado
Fork of PRUEBATECLADO by
Embed:
(wiki syntax)
Show/hide line numbers
TabletBrailleconTeclado.cpp
00001 #include "mbed.h" 00002 00003 Serial pc(USBTX, USBRX); // tx, rx COMUNICACION SERIAL 00004 //---------------------------------------- P U E R T O S ---------------------------------------------- 00005 // se utiliza un Bus oOut por cada celdilla 00006 BusOut celda_D(PTD4, PTA12, PTC7, PTC3, PTC4, PTC5); 00007 BusOut celda_C(PTA5, PTC8, PTC9, PTC6, PTC10, PTC11); 00008 BusOut celda_B(PTA13, PTD5, PTD0, PTC12, PTC13, PTC16); 00009 BusOut celda_A(PTD2, PTD3, PTD1, PTC17, PTA16, PTA17); 00010 BusOut celda_E(PTE30, PTE29, PTE23, PTC2, PTB3, PTB2); 00011 //----------------------------------------- E N T R A D A T E C L A D O ----------------------------- 00012 BusIn tecladoval(PTB10, PTB9, PTB0, PTB1, PTE5, PTE20, PTE21, PTE22);// son los 8 botones uno para cada letra o funcion que se activan solo si la convinacion es correcta 00013 //----------------------------------------- T I M E R S ----------------------------------------------- 00014 Timer contador; //este timer es para la funcion principal 00015 Timer timeb;// este otro timer es para que cheque si el valor de la convincion del teclado ha cambiado 00016 //---------------------------------------- V A R I A B L E S ------------------------------------------ 00017 int letra; 00018 int celda = 0; 00019 int tecladoval_ant; 00020 int tiempen; 00021 int tiempant; 00022 //-----------------------------------------F U N C I O N E S ------------------------------------------ 00023 void compu(); //funcion que recibe letras del teclado y manda el valor a imprimir 00024 void teclado();// funcion que espera cierto tiempo hasta que la convinacion este hecha y la manda a decodebotons 00025 void imprimir();// funcion que imprime el valor dado de la funcion compu o decodebotons 00026 void decodebotons();// funcion que le asigna un valor el codigo mandado del teclado 00027 //--------------------------------------- P R O G R A M A --------------------------------------------- 00028 int main() {// el programa siempre espera un caracter de la compu mietras que cada 100 milisegundos checa el teclado 00029 pc.attach(&compu); 00030 contador.start(); 00031 while(1) { 00032 if (contador.read_ms() == 100){ 00033 teclado(); 00034 contador.reset(); 00035 } 00036 } 00037 } 00038 //----------------------------------- F U N C I O N D E S P L E G A D A ---------------------------- 00039 void decodebotons(){ // no se utilizo la funion default para poder agregar mas caracteres especiales 00040 switch (tecladoval){ 00041 case 0: pc.printf(""); break; 00042 case 1: pc.printf("A"); letra = 1; break; 00043 case 2: pc.printf(""); break; 00044 case 3: pc.printf("B"); letra = 3; break; 00045 case 4: pc.printf(""); break; 00046 case 5: pc.printf("K"); letra = 5; break; 00047 case 6: pc.printf(""); break; 00048 case 7: pc.printf("L"); letra = 7; break; 00049 case 8: pc.printf(""); break; 00050 case 9: pc.printf("C"); letra = 9; break; 00051 case 10: pc.printf("I"); letra = 10; break; 00052 case 11: pc.printf("F"); letra = 11; break; 00053 case 12: pc.printf(""); break; 00054 case 13: pc.printf("M"); letra = 13; break; 00055 case 14: pc.printf("S"); letra = 14; break; 00056 case 15: pc.printf("P"); letra = 15; break; 00057 case 16: pc.printf(""); break; 00058 case 17: pc.printf("E"); letra = 17; break; 00059 case 18: pc.printf(""); break; 00060 case 19: pc.printf("H"); letra = 19; break; 00061 case 20: pc.printf(""); break; 00062 case 21: pc.printf("O"); letra = 21; break; 00063 case 22: pc.printf(""); break; 00064 case 23: pc.printf("R"); letra = 22; break; 00065 case 24: pc.printf(""); break; 00066 case 25: pc.printf("D"); letra = 25; break; 00067 case 26: pc.printf("J"); letra = 26; break; 00068 case 27: pc.printf("G"); letra = 27; break; 00069 case 28: pc.printf(""); break; 00070 case 29: pc.printf("N"); letra = 29; break; 00071 case 30: pc.printf("T"); letra = 30; break; 00072 case 31: pc.printf("Q"); letra = 31; break; 00073 case 32: pc.printf(""); break; 00074 case 33: pc.printf(""); break; 00075 case 34: pc.printf(""); break; 00076 case 35: pc.printf(""); break; 00077 case 36: pc.printf(""); break; 00078 case 37: pc.printf("U"); letra = 37; break; 00079 case 38: pc.printf(""); break; 00080 case 39: pc.printf("V"); letra = 39; break; 00081 case 40: pc.printf("|"); letra = 40; break; 00082 case 41: pc.printf(""); break; 00083 case 42: pc.printf(""); break; 00084 case 43: pc.printf(""); break; 00085 case 44: pc.printf(""); break; 00086 case 45: pc.printf("X"); letra = 45; break; 00087 case 46: pc.printf(""); break; 00088 case 47: pc.printf(""); break; 00089 case 48: pc.printf(""); break; 00090 case 49: pc.printf(""); break; 00091 case 50: pc.printf(""); break; 00092 case 51: pc.printf(""); break; 00093 case 52: pc.printf(""); break; 00094 case 53: pc.printf("Z"); letra = 53; break; 00095 case 54: pc.printf(""); break; 00096 case 55: pc.printf(""); break; 00097 case 56: pc.printf(""); break; 00098 case 57: pc.printf(""); break; 00099 case 58: pc.printf("W"); letra = 58; break; 00100 case 59: pc.printf("Ñ"); letra = 59; break; 00101 case 60: pc.printf("#"); letra = 60; break; 00102 case 61: pc.printf("Y"); letra = 61; break; 00103 case 62: pc.printf(""); break; 00104 case 63: pc.printf(""); break; 00105 case 64: pc.printf(" "); letra = 64; break; 00106 case 128: pc.printf("<--\n"); celda_A = celda_B = celda_C = celda_D = celda_E = 0; celda = -1; break; 00107 } 00108 } 00109 void compu(){ 00110 char ch = pc.getc(); 00111 //que escribir 00112 if (ch == 'A' | ch == 'a' | ch == '1'){ 00113 letra = 1; 00114 pc.printf("A"); 00115 } else if (ch == 'B' | ch == 'b' | ch == '2'){ 00116 letra = 3; 00117 pc.printf("B"); 00118 } else if (ch == 'C' | ch == 'c' | ch == '3'){ 00119 pc.printf("C"); 00120 letra = 9; 00121 } else if (ch == 'D' | ch == 'd' | ch == '4'){ 00122 pc.printf("D"); 00123 letra = 25; 00124 } else if (ch == 'E' | ch == 'e' | ch == '5'){ 00125 pc.printf("E"); 00126 letra = 17; 00127 } else if (ch == 'F' | ch == 'f' | ch == '6'){ 00128 pc.printf("F"); 00129 letra = 11; 00130 } else if (ch == 'G' | ch == 'g' | ch == '7'){ 00131 pc.printf("G"); 00132 letra = 27; 00133 } else if (ch == 'H' | ch == 'h' | ch == '8'){ 00134 pc.printf("H"); 00135 letra = 19; 00136 } else if (ch == 'I' | ch == 'i' | ch == '9'){ 00137 pc.printf("I"); 00138 letra = 10; 00139 } else if (ch == 'J' | ch == 'j' | ch == '0'){ 00140 pc.printf("J"); 00141 letra = 26; 00142 } else if (ch == 'K' | ch == 'k'){ 00143 pc.printf("K"); 00144 letra = 5; 00145 } else if (ch == 'L' | ch == 'l'){ 00146 pc.printf("L"); 00147 letra = 7; 00148 } else if (ch == 'M' | ch == 'm'){ 00149 pc.printf("M"); 00150 letra = 13; 00151 } else if (ch == 'N' | ch == 'n'){ 00152 pc.printf("N"); 00153 letra = 29; 00154 } else if (ch == 'O' | ch == 'o'){ 00155 pc.printf("O"); 00156 letra = 21; 00157 } else if (ch == 'P' | ch == 'p'){ 00158 pc.printf("P"); 00159 letra = 15; 00160 } else if (ch == 'Q' | ch == 'q'){ 00161 pc.printf("Q"); 00162 letra = 31; 00163 } else if (ch == 'R' | ch == 'r'){ 00164 pc.printf("R"); 00165 letra = 23; 00166 } else if (ch == 'S' | ch == 's'){ 00167 pc.printf("S"); 00168 letra = 14; 00169 } else if (ch == 'T' | ch == 't'){ 00170 pc.printf("T"); 00171 letra = 30; 00172 } else if (ch == 'U' | ch == 'u'){ 00173 pc.printf("U"); 00174 letra = 37; 00175 } else if (ch == 'V' | ch == 'v'){ 00176 pc.printf("V"); 00177 letra = 39; 00178 } else if (ch == 'W' | ch == 'w'){ 00179 pc.printf("W"); 00180 letra = 58; 00181 } else if (ch == 'X' | ch == 'x'){ 00182 pc.printf("X"); 00183 letra = 45; 00184 } else if (ch == 'Y' | ch == 'y'){ 00185 pc.printf("Y"); 00186 letra = 61; 00187 } else if (ch == 'Z' | ch == 'z'){ 00188 pc.printf("Z"); 00189 letra = 53; 00190 }else{ 00191 ch = (int)ch; 00192 if (ch == 127){ 00193 pc.printf("<-- \n"); 00194 celda_A = celda_B = celda_C = celda_D = celda_E = 0; 00195 celda = -1; 00196 } else if (ch == 35){ 00197 pc.printf("#"); 00198 letra = 60; 00199 } else if (ch == 124){ 00200 pc.printf("|"); 00201 letra = 40; 00202 } else if (ch == 164 | ch == 165){ 00203 pc.printf("Ñ"); 00204 letra = 59; 00205 } else if (ch == 32){ 00206 pc.printf(" "); 00207 letra = 0; 00208 } else if (ch == 10 | ch == 9){ 00209 celda-=2; 00210 00211 } 00212 } 00213 imprimir(); 00214 }//termino funcion compu 00215 void imprimir(){ 00216 if (celda == 0){ 00217 celda_A = letra; 00218 }else if(celda == 1){ 00219 celda_B = letra; 00220 }else if(celda == 2){ 00221 celda_C = letra; 00222 }else if(celda == 3){ 00223 celda_D = letra; 00224 }else if(celda == 4){ 00225 celda_E = letra; 00226 } 00227 00228 if(celda >= 4){ 00229 celda = 0; 00230 } else{ 00231 celda += 1; 00232 } 00233 }// termina funcion imprimir 00234 00235 void teclado(){ 00236 tiempen = 0; 00237 tiempant = 0; 00238 timeb.start(); 00239 tecladoval_ant = tecladoval; 00240 while((tiempen-tiempant)<250){ 00241 tiempen = timeb.read_ms(); 00242 if (tecladoval != tecladoval_ant){ 00243 tecladoval_ant = tecladoval; 00244 tiempant = tiempen; 00245 } 00246 } 00247 if(tecladoval == tecladoval_ant && tecladoval != 0){ 00248 decodebotons(); 00249 imprimir(); 00250 } 00251 timeb.reset(); 00252 }//termina fincion teclado
Generated on Sat Aug 13 2022 05:47:12 by 1.7.2