Tablet Braille con Teclado

Dependencies:   mbed

Fork of PRUEBATECLADO by Andres Gaffs

Committer:
AndresGaffS
Date:
Sun May 11 22:23:55 2014 +0000
Revision:
0:1f31cf981ab4
Tablet Braille

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AndresGaffS 0:1f31cf981ab4 1 #include "mbed.h"
AndresGaffS 0:1f31cf981ab4 2
AndresGaffS 0:1f31cf981ab4 3 Serial pc(USBTX, USBRX); // tx, rx COMUNICACION SERIAL
AndresGaffS 0:1f31cf981ab4 4 //---------------------------------------- P U E R T O S ----------------------------------------------
AndresGaffS 0:1f31cf981ab4 5 // se utiliza un Bus oOut por cada celdilla
AndresGaffS 0:1f31cf981ab4 6 BusOut celda_D(PTD4, PTA12, PTC7, PTC3, PTC4, PTC5);
AndresGaffS 0:1f31cf981ab4 7 BusOut celda_C(PTA5, PTC8, PTC9, PTC6, PTC10, PTC11);
AndresGaffS 0:1f31cf981ab4 8 BusOut celda_B(PTA13, PTD5, PTD0, PTC12, PTC13, PTC16);
AndresGaffS 0:1f31cf981ab4 9 BusOut celda_A(PTD2, PTD3, PTD1, PTC17, PTA16, PTA17);
AndresGaffS 0:1f31cf981ab4 10 BusOut celda_E(PTE30, PTE29, PTE23, PTC2, PTB3, PTB2);
AndresGaffS 0:1f31cf981ab4 11 //----------------------------------------- E N T R A D A T E C L A D O -----------------------------
AndresGaffS 0:1f31cf981ab4 12 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
AndresGaffS 0:1f31cf981ab4 13 //----------------------------------------- T I M E R S -----------------------------------------------
AndresGaffS 0:1f31cf981ab4 14 Timer contador; //este timer es para la funcion principal
AndresGaffS 0:1f31cf981ab4 15 Timer timeb;// este otro timer es para que cheque si el valor de la convincion del teclado ha cambiado
AndresGaffS 0:1f31cf981ab4 16 //---------------------------------------- V A R I A B L E S ------------------------------------------
AndresGaffS 0:1f31cf981ab4 17 int letra;
AndresGaffS 0:1f31cf981ab4 18 int celda = 0;
AndresGaffS 0:1f31cf981ab4 19 int tecladoval_ant;
AndresGaffS 0:1f31cf981ab4 20 int tiempen;
AndresGaffS 0:1f31cf981ab4 21 int tiempant;
AndresGaffS 0:1f31cf981ab4 22 //-----------------------------------------F U N C I O N E S ------------------------------------------
AndresGaffS 0:1f31cf981ab4 23 void compu(); //funcion que recibe letras del teclado y manda el valor a imprimir
AndresGaffS 0:1f31cf981ab4 24 void teclado();// funcion que espera cierto tiempo hasta que la convinacion este hecha y la manda a decodebotons
AndresGaffS 0:1f31cf981ab4 25 void imprimir();// funcion que imprime el valor dado de la funcion compu o decodebotons
AndresGaffS 0:1f31cf981ab4 26 void decodebotons();// funcion que le asigna un valor el codigo mandado del teclado
AndresGaffS 0:1f31cf981ab4 27 //--------------------------------------- P R O G R A M A ---------------------------------------------
AndresGaffS 0:1f31cf981ab4 28 int main() {// el programa siempre espera un caracter de la compu mietras que cada 100 milisegundos checa el teclado
AndresGaffS 0:1f31cf981ab4 29 pc.attach(&compu);
AndresGaffS 0:1f31cf981ab4 30 contador.start();
AndresGaffS 0:1f31cf981ab4 31 while(1) {
AndresGaffS 0:1f31cf981ab4 32 if (contador.read_ms() == 100){
AndresGaffS 0:1f31cf981ab4 33 teclado();
AndresGaffS 0:1f31cf981ab4 34 contador.reset();
AndresGaffS 0:1f31cf981ab4 35 }
AndresGaffS 0:1f31cf981ab4 36 }
AndresGaffS 0:1f31cf981ab4 37 }
AndresGaffS 0:1f31cf981ab4 38 //----------------------------------- F U N C I O N D E S P L E G A D A ----------------------------
AndresGaffS 0:1f31cf981ab4 39 void decodebotons(){ // no se utilizo la funion default para poder agregar mas caracteres especiales
AndresGaffS 0:1f31cf981ab4 40 switch (tecladoval){
AndresGaffS 0:1f31cf981ab4 41 case 0: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 42 case 1: pc.printf("A"); letra = 1; break;
AndresGaffS 0:1f31cf981ab4 43 case 2: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 44 case 3: pc.printf("B"); letra = 3; break;
AndresGaffS 0:1f31cf981ab4 45 case 4: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 46 case 5: pc.printf("K"); letra = 5; break;
AndresGaffS 0:1f31cf981ab4 47 case 6: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 48 case 7: pc.printf("L"); letra = 7; break;
AndresGaffS 0:1f31cf981ab4 49 case 8: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 50 case 9: pc.printf("C"); letra = 9; break;
AndresGaffS 0:1f31cf981ab4 51 case 10: pc.printf("I"); letra = 10; break;
AndresGaffS 0:1f31cf981ab4 52 case 11: pc.printf("F"); letra = 11; break;
AndresGaffS 0:1f31cf981ab4 53 case 12: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 54 case 13: pc.printf("M"); letra = 13; break;
AndresGaffS 0:1f31cf981ab4 55 case 14: pc.printf("S"); letra = 14; break;
AndresGaffS 0:1f31cf981ab4 56 case 15: pc.printf("P"); letra = 15; break;
AndresGaffS 0:1f31cf981ab4 57 case 16: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 58 case 17: pc.printf("E"); letra = 17; break;
AndresGaffS 0:1f31cf981ab4 59 case 18: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 60 case 19: pc.printf("H"); letra = 19; break;
AndresGaffS 0:1f31cf981ab4 61 case 20: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 62 case 21: pc.printf("O"); letra = 21; break;
AndresGaffS 0:1f31cf981ab4 63 case 22: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 64 case 23: pc.printf("R"); letra = 22; break;
AndresGaffS 0:1f31cf981ab4 65 case 24: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 66 case 25: pc.printf("D"); letra = 25; break;
AndresGaffS 0:1f31cf981ab4 67 case 26: pc.printf("J"); letra = 26; break;
AndresGaffS 0:1f31cf981ab4 68 case 27: pc.printf("G"); letra = 27; break;
AndresGaffS 0:1f31cf981ab4 69 case 28: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 70 case 29: pc.printf("N"); letra = 29; break;
AndresGaffS 0:1f31cf981ab4 71 case 30: pc.printf("T"); letra = 30; break;
AndresGaffS 0:1f31cf981ab4 72 case 31: pc.printf("Q"); letra = 31; break;
AndresGaffS 0:1f31cf981ab4 73 case 32: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 74 case 33: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 75 case 34: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 76 case 35: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 77 case 36: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 78 case 37: pc.printf("U"); letra = 37; break;
AndresGaffS 0:1f31cf981ab4 79 case 38: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 80 case 39: pc.printf("V"); letra = 39; break;
AndresGaffS 0:1f31cf981ab4 81 case 40: pc.printf("|"); letra = 40; break;
AndresGaffS 0:1f31cf981ab4 82 case 41: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 83 case 42: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 84 case 43: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 85 case 44: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 86 case 45: pc.printf("X"); letra = 45; break;
AndresGaffS 0:1f31cf981ab4 87 case 46: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 88 case 47: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 89 case 48: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 90 case 49: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 91 case 50: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 92 case 51: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 93 case 52: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 94 case 53: pc.printf("Z"); letra = 53; break;
AndresGaffS 0:1f31cf981ab4 95 case 54: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 96 case 55: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 97 case 56: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 98 case 57: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 99 case 58: pc.printf("W"); letra = 58; break;
AndresGaffS 0:1f31cf981ab4 100 case 59: pc.printf("Ñ"); letra = 59; break;
AndresGaffS 0:1f31cf981ab4 101 case 60: pc.printf("#"); letra = 60; break;
AndresGaffS 0:1f31cf981ab4 102 case 61: pc.printf("Y"); letra = 61; break;
AndresGaffS 0:1f31cf981ab4 103 case 62: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 104 case 63: pc.printf(""); break;
AndresGaffS 0:1f31cf981ab4 105 case 64: pc.printf(" "); letra = 64; break;
AndresGaffS 0:1f31cf981ab4 106 case 128: pc.printf("<--\n"); celda_A = celda_B = celda_C = celda_D = celda_E = 0; celda = -1; break;
AndresGaffS 0:1f31cf981ab4 107 }
AndresGaffS 0:1f31cf981ab4 108 }
AndresGaffS 0:1f31cf981ab4 109 void compu(){
AndresGaffS 0:1f31cf981ab4 110 char ch = pc.getc();
AndresGaffS 0:1f31cf981ab4 111 //que escribir
AndresGaffS 0:1f31cf981ab4 112 if (ch == 'A' | ch == 'a' | ch == '1'){
AndresGaffS 0:1f31cf981ab4 113 letra = 1;
AndresGaffS 0:1f31cf981ab4 114 pc.printf("A");
AndresGaffS 0:1f31cf981ab4 115 } else if (ch == 'B' | ch == 'b' | ch == '2'){
AndresGaffS 0:1f31cf981ab4 116 letra = 3;
AndresGaffS 0:1f31cf981ab4 117 pc.printf("B");
AndresGaffS 0:1f31cf981ab4 118 } else if (ch == 'C' | ch == 'c' | ch == '3'){
AndresGaffS 0:1f31cf981ab4 119 pc.printf("C");
AndresGaffS 0:1f31cf981ab4 120 letra = 9;
AndresGaffS 0:1f31cf981ab4 121 } else if (ch == 'D' | ch == 'd' | ch == '4'){
AndresGaffS 0:1f31cf981ab4 122 pc.printf("D");
AndresGaffS 0:1f31cf981ab4 123 letra = 25;
AndresGaffS 0:1f31cf981ab4 124 } else if (ch == 'E' | ch == 'e' | ch == '5'){
AndresGaffS 0:1f31cf981ab4 125 pc.printf("E");
AndresGaffS 0:1f31cf981ab4 126 letra = 17;
AndresGaffS 0:1f31cf981ab4 127 } else if (ch == 'F' | ch == 'f' | ch == '6'){
AndresGaffS 0:1f31cf981ab4 128 pc.printf("F");
AndresGaffS 0:1f31cf981ab4 129 letra = 11;
AndresGaffS 0:1f31cf981ab4 130 } else if (ch == 'G' | ch == 'g' | ch == '7'){
AndresGaffS 0:1f31cf981ab4 131 pc.printf("G");
AndresGaffS 0:1f31cf981ab4 132 letra = 27;
AndresGaffS 0:1f31cf981ab4 133 } else if (ch == 'H' | ch == 'h' | ch == '8'){
AndresGaffS 0:1f31cf981ab4 134 pc.printf("H");
AndresGaffS 0:1f31cf981ab4 135 letra = 19;
AndresGaffS 0:1f31cf981ab4 136 } else if (ch == 'I' | ch == 'i' | ch == '9'){
AndresGaffS 0:1f31cf981ab4 137 pc.printf("I");
AndresGaffS 0:1f31cf981ab4 138 letra = 10;
AndresGaffS 0:1f31cf981ab4 139 } else if (ch == 'J' | ch == 'j' | ch == '0'){
AndresGaffS 0:1f31cf981ab4 140 pc.printf("J");
AndresGaffS 0:1f31cf981ab4 141 letra = 26;
AndresGaffS 0:1f31cf981ab4 142 } else if (ch == 'K' | ch == 'k'){
AndresGaffS 0:1f31cf981ab4 143 pc.printf("K");
AndresGaffS 0:1f31cf981ab4 144 letra = 5;
AndresGaffS 0:1f31cf981ab4 145 } else if (ch == 'L' | ch == 'l'){
AndresGaffS 0:1f31cf981ab4 146 pc.printf("L");
AndresGaffS 0:1f31cf981ab4 147 letra = 7;
AndresGaffS 0:1f31cf981ab4 148 } else if (ch == 'M' | ch == 'm'){
AndresGaffS 0:1f31cf981ab4 149 pc.printf("M");
AndresGaffS 0:1f31cf981ab4 150 letra = 13;
AndresGaffS 0:1f31cf981ab4 151 } else if (ch == 'N' | ch == 'n'){
AndresGaffS 0:1f31cf981ab4 152 pc.printf("N");
AndresGaffS 0:1f31cf981ab4 153 letra = 29;
AndresGaffS 0:1f31cf981ab4 154 } else if (ch == 'O' | ch == 'o'){
AndresGaffS 0:1f31cf981ab4 155 pc.printf("O");
AndresGaffS 0:1f31cf981ab4 156 letra = 21;
AndresGaffS 0:1f31cf981ab4 157 } else if (ch == 'P' | ch == 'p'){
AndresGaffS 0:1f31cf981ab4 158 pc.printf("P");
AndresGaffS 0:1f31cf981ab4 159 letra = 15;
AndresGaffS 0:1f31cf981ab4 160 } else if (ch == 'Q' | ch == 'q'){
AndresGaffS 0:1f31cf981ab4 161 pc.printf("Q");
AndresGaffS 0:1f31cf981ab4 162 letra = 31;
AndresGaffS 0:1f31cf981ab4 163 } else if (ch == 'R' | ch == 'r'){
AndresGaffS 0:1f31cf981ab4 164 pc.printf("R");
AndresGaffS 0:1f31cf981ab4 165 letra = 23;
AndresGaffS 0:1f31cf981ab4 166 } else if (ch == 'S' | ch == 's'){
AndresGaffS 0:1f31cf981ab4 167 pc.printf("S");
AndresGaffS 0:1f31cf981ab4 168 letra = 14;
AndresGaffS 0:1f31cf981ab4 169 } else if (ch == 'T' | ch == 't'){
AndresGaffS 0:1f31cf981ab4 170 pc.printf("T");
AndresGaffS 0:1f31cf981ab4 171 letra = 30;
AndresGaffS 0:1f31cf981ab4 172 } else if (ch == 'U' | ch == 'u'){
AndresGaffS 0:1f31cf981ab4 173 pc.printf("U");
AndresGaffS 0:1f31cf981ab4 174 letra = 37;
AndresGaffS 0:1f31cf981ab4 175 } else if (ch == 'V' | ch == 'v'){
AndresGaffS 0:1f31cf981ab4 176 pc.printf("V");
AndresGaffS 0:1f31cf981ab4 177 letra = 39;
AndresGaffS 0:1f31cf981ab4 178 } else if (ch == 'W' | ch == 'w'){
AndresGaffS 0:1f31cf981ab4 179 pc.printf("W");
AndresGaffS 0:1f31cf981ab4 180 letra = 58;
AndresGaffS 0:1f31cf981ab4 181 } else if (ch == 'X' | ch == 'x'){
AndresGaffS 0:1f31cf981ab4 182 pc.printf("X");
AndresGaffS 0:1f31cf981ab4 183 letra = 45;
AndresGaffS 0:1f31cf981ab4 184 } else if (ch == 'Y' | ch == 'y'){
AndresGaffS 0:1f31cf981ab4 185 pc.printf("Y");
AndresGaffS 0:1f31cf981ab4 186 letra = 61;
AndresGaffS 0:1f31cf981ab4 187 } else if (ch == 'Z' | ch == 'z'){
AndresGaffS 0:1f31cf981ab4 188 pc.printf("Z");
AndresGaffS 0:1f31cf981ab4 189 letra = 53;
AndresGaffS 0:1f31cf981ab4 190 }else{
AndresGaffS 0:1f31cf981ab4 191 ch = (int)ch;
AndresGaffS 0:1f31cf981ab4 192 if (ch == 127){
AndresGaffS 0:1f31cf981ab4 193 pc.printf("<-- \n");
AndresGaffS 0:1f31cf981ab4 194 celda_A = celda_B = celda_C = celda_D = celda_E = 0;
AndresGaffS 0:1f31cf981ab4 195 celda = -1;
AndresGaffS 0:1f31cf981ab4 196 } else if (ch == 35){
AndresGaffS 0:1f31cf981ab4 197 pc.printf("#");
AndresGaffS 0:1f31cf981ab4 198 letra = 60;
AndresGaffS 0:1f31cf981ab4 199 } else if (ch == 124){
AndresGaffS 0:1f31cf981ab4 200 pc.printf("|");
AndresGaffS 0:1f31cf981ab4 201 letra = 40;
AndresGaffS 0:1f31cf981ab4 202 } else if (ch == 164 | ch == 165){
AndresGaffS 0:1f31cf981ab4 203 pc.printf("Ñ");
AndresGaffS 0:1f31cf981ab4 204 letra = 59;
AndresGaffS 0:1f31cf981ab4 205 } else if (ch == 32){
AndresGaffS 0:1f31cf981ab4 206 pc.printf(" ");
AndresGaffS 0:1f31cf981ab4 207 letra = 0;
AndresGaffS 0:1f31cf981ab4 208 } else if (ch == 10 | ch == 9){
AndresGaffS 0:1f31cf981ab4 209 celda-=2;
AndresGaffS 0:1f31cf981ab4 210
AndresGaffS 0:1f31cf981ab4 211 }
AndresGaffS 0:1f31cf981ab4 212 }
AndresGaffS 0:1f31cf981ab4 213 imprimir();
AndresGaffS 0:1f31cf981ab4 214 }//termino funcion compu
AndresGaffS 0:1f31cf981ab4 215 void imprimir(){
AndresGaffS 0:1f31cf981ab4 216 if (celda == 0){
AndresGaffS 0:1f31cf981ab4 217 celda_A = letra;
AndresGaffS 0:1f31cf981ab4 218 }else if(celda == 1){
AndresGaffS 0:1f31cf981ab4 219 celda_B = letra;
AndresGaffS 0:1f31cf981ab4 220 }else if(celda == 2){
AndresGaffS 0:1f31cf981ab4 221 celda_C = letra;
AndresGaffS 0:1f31cf981ab4 222 }else if(celda == 3){
AndresGaffS 0:1f31cf981ab4 223 celda_D = letra;
AndresGaffS 0:1f31cf981ab4 224 }else if(celda == 4){
AndresGaffS 0:1f31cf981ab4 225 celda_E = letra;
AndresGaffS 0:1f31cf981ab4 226 }
AndresGaffS 0:1f31cf981ab4 227
AndresGaffS 0:1f31cf981ab4 228 if(celda >= 4){
AndresGaffS 0:1f31cf981ab4 229 celda = 0;
AndresGaffS 0:1f31cf981ab4 230 } else{
AndresGaffS 0:1f31cf981ab4 231 celda += 1;
AndresGaffS 0:1f31cf981ab4 232 }
AndresGaffS 0:1f31cf981ab4 233 }// termina funcion imprimir
AndresGaffS 0:1f31cf981ab4 234
AndresGaffS 0:1f31cf981ab4 235 void teclado(){
AndresGaffS 0:1f31cf981ab4 236 tiempen = 0;
AndresGaffS 0:1f31cf981ab4 237 tiempant = 0;
AndresGaffS 0:1f31cf981ab4 238 timeb.start();
AndresGaffS 0:1f31cf981ab4 239 tecladoval_ant = tecladoval;
AndresGaffS 0:1f31cf981ab4 240 while((tiempen-tiempant)<250){
AndresGaffS 0:1f31cf981ab4 241 tiempen = timeb.read_ms();
AndresGaffS 0:1f31cf981ab4 242 if (tecladoval != tecladoval_ant){
AndresGaffS 0:1f31cf981ab4 243 tecladoval_ant = tecladoval;
AndresGaffS 0:1f31cf981ab4 244 tiempant = tiempen;
AndresGaffS 0:1f31cf981ab4 245 }
AndresGaffS 0:1f31cf981ab4 246 }
AndresGaffS 0:1f31cf981ab4 247 if(tecladoval == tecladoval_ant && tecladoval != 0){
AndresGaffS 0:1f31cf981ab4 248 decodebotons();
AndresGaffS 0:1f31cf981ab4 249 imprimir();
AndresGaffS 0:1f31cf981ab4 250 }
AndresGaffS 0:1f31cf981ab4 251 timeb.reset();
AndresGaffS 0:1f31cf981ab4 252 }//termina fincion teclado