Tablet Braille con Teclado

Dependencies:   mbed

Fork of PRUEBATECLADO by Andres Gaffs

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TabletBrailleconTeclado.cpp Source File

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