Andres Gaffs
/
TabletBrailleconTeclado
Tablet Braille con Teclado
Fork of PRUEBATECLADO by
Revision 0:1f31cf981ab4, committed 2014-05-11
- Comitter:
- AndresGaffS
- Date:
- Sun May 11 22:23:55 2014 +0000
- Commit message:
- Tablet Braille
Changed in this revision
TabletBrailleconTeclado.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 1f31cf981ab4 TabletBrailleconTeclado.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TabletBrailleconTeclado.cpp Sun May 11 22:23:55 2014 +0000 @@ -0,0 +1,252 @@ +#include "mbed.h" + +Serial pc(USBTX, USBRX); // tx, rx COMUNICACION SERIAL +//---------------------------------------- P U E R T O S ---------------------------------------------- +// se utiliza un Bus oOut por cada celdilla +BusOut celda_D(PTD4, PTA12, PTC7, PTC3, PTC4, PTC5); +BusOut celda_C(PTA5, PTC8, PTC9, PTC6, PTC10, PTC11); +BusOut celda_B(PTA13, PTD5, PTD0, PTC12, PTC13, PTC16); +BusOut celda_A(PTD2, PTD3, PTD1, PTC17, PTA16, PTA17); +BusOut celda_E(PTE30, PTE29, PTE23, PTC2, PTB3, PTB2); +//----------------------------------------- E N T R A D A T E C L A D O ----------------------------- +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 +//----------------------------------------- T I M E R S ----------------------------------------------- +Timer contador; //este timer es para la funcion principal +Timer timeb;// este otro timer es para que cheque si el valor de la convincion del teclado ha cambiado +//---------------------------------------- V A R I A B L E S ------------------------------------------ +int letra; +int celda = 0; +int tecladoval_ant; +int tiempen; +int tiempant; +//-----------------------------------------F U N C I O N E S ------------------------------------------ +void compu(); //funcion que recibe letras del teclado y manda el valor a imprimir +void teclado();// funcion que espera cierto tiempo hasta que la convinacion este hecha y la manda a decodebotons +void imprimir();// funcion que imprime el valor dado de la funcion compu o decodebotons +void decodebotons();// funcion que le asigna un valor el codigo mandado del teclado +//--------------------------------------- P R O G R A M A --------------------------------------------- +int main() {// el programa siempre espera un caracter de la compu mietras que cada 100 milisegundos checa el teclado + pc.attach(&compu); + contador.start(); + while(1) { + if (contador.read_ms() == 100){ + teclado(); + contador.reset(); + } + } +} +//----------------------------------- F U N C I O N D E S P L E G A D A ---------------------------- +void decodebotons(){ // no se utilizo la funion default para poder agregar mas caracteres especiales + switch (tecladoval){ + case 0: pc.printf(""); break; + case 1: pc.printf("A"); letra = 1; break; + case 2: pc.printf(""); break; + case 3: pc.printf("B"); letra = 3; break; + case 4: pc.printf(""); break; + case 5: pc.printf("K"); letra = 5; break; + case 6: pc.printf(""); break; + case 7: pc.printf("L"); letra = 7; break; + case 8: pc.printf(""); break; + case 9: pc.printf("C"); letra = 9; break; + case 10: pc.printf("I"); letra = 10; break; + case 11: pc.printf("F"); letra = 11; break; + case 12: pc.printf(""); break; + case 13: pc.printf("M"); letra = 13; break; + case 14: pc.printf("S"); letra = 14; break; + case 15: pc.printf("P"); letra = 15; break; + case 16: pc.printf(""); break; + case 17: pc.printf("E"); letra = 17; break; + case 18: pc.printf(""); break; + case 19: pc.printf("H"); letra = 19; break; + case 20: pc.printf(""); break; + case 21: pc.printf("O"); letra = 21; break; + case 22: pc.printf(""); break; + case 23: pc.printf("R"); letra = 22; break; + case 24: pc.printf(""); break; + case 25: pc.printf("D"); letra = 25; break; + case 26: pc.printf("J"); letra = 26; break; + case 27: pc.printf("G"); letra = 27; break; + case 28: pc.printf(""); break; + case 29: pc.printf("N"); letra = 29; break; + case 30: pc.printf("T"); letra = 30; break; + case 31: pc.printf("Q"); letra = 31; break; + case 32: pc.printf(""); break; + case 33: pc.printf(""); break; + case 34: pc.printf(""); break; + case 35: pc.printf(""); break; + case 36: pc.printf(""); break; + case 37: pc.printf("U"); letra = 37; break; + case 38: pc.printf(""); break; + case 39: pc.printf("V"); letra = 39; break; + case 40: pc.printf("|"); letra = 40; break; + case 41: pc.printf(""); break; + case 42: pc.printf(""); break; + case 43: pc.printf(""); break; + case 44: pc.printf(""); break; + case 45: pc.printf("X"); letra = 45; break; + case 46: pc.printf(""); break; + case 47: pc.printf(""); break; + case 48: pc.printf(""); break; + case 49: pc.printf(""); break; + case 50: pc.printf(""); break; + case 51: pc.printf(""); break; + case 52: pc.printf(""); break; + case 53: pc.printf("Z"); letra = 53; break; + case 54: pc.printf(""); break; + case 55: pc.printf(""); break; + case 56: pc.printf(""); break; + case 57: pc.printf(""); break; + case 58: pc.printf("W"); letra = 58; break; + case 59: pc.printf("Ñ"); letra = 59; break; + case 60: pc.printf("#"); letra = 60; break; + case 61: pc.printf("Y"); letra = 61; break; + case 62: pc.printf(""); break; + case 63: pc.printf(""); break; + case 64: pc.printf(" "); letra = 64; break; + case 128: pc.printf("<--\n"); celda_A = celda_B = celda_C = celda_D = celda_E = 0; celda = -1; break; + } +} +void compu(){ + char ch = pc.getc(); + //que escribir + if (ch == 'A' | ch == 'a' | ch == '1'){ + letra = 1; + pc.printf("A"); + } else if (ch == 'B' | ch == 'b' | ch == '2'){ + letra = 3; + pc.printf("B"); + } else if (ch == 'C' | ch == 'c' | ch == '3'){ + pc.printf("C"); + letra = 9; + } else if (ch == 'D' | ch == 'd' | ch == '4'){ + pc.printf("D"); + letra = 25; + } else if (ch == 'E' | ch == 'e' | ch == '5'){ + pc.printf("E"); + letra = 17; + } else if (ch == 'F' | ch == 'f' | ch == '6'){ + pc.printf("F"); + letra = 11; + } else if (ch == 'G' | ch == 'g' | ch == '7'){ + pc.printf("G"); + letra = 27; + } else if (ch == 'H' | ch == 'h' | ch == '8'){ + pc.printf("H"); + letra = 19; + } else if (ch == 'I' | ch == 'i' | ch == '9'){ + pc.printf("I"); + letra = 10; + } else if (ch == 'J' | ch == 'j' | ch == '0'){ + pc.printf("J"); + letra = 26; + } else if (ch == 'K' | ch == 'k'){ + pc.printf("K"); + letra = 5; + } else if (ch == 'L' | ch == 'l'){ + pc.printf("L"); + letra = 7; + } else if (ch == 'M' | ch == 'm'){ + pc.printf("M"); + letra = 13; + } else if (ch == 'N' | ch == 'n'){ + pc.printf("N"); + letra = 29; + } else if (ch == 'O' | ch == 'o'){ + pc.printf("O"); + letra = 21; + } else if (ch == 'P' | ch == 'p'){ + pc.printf("P"); + letra = 15; + } else if (ch == 'Q' | ch == 'q'){ + pc.printf("Q"); + letra = 31; + } else if (ch == 'R' | ch == 'r'){ + pc.printf("R"); + letra = 23; + } else if (ch == 'S' | ch == 's'){ + pc.printf("S"); + letra = 14; + } else if (ch == 'T' | ch == 't'){ + pc.printf("T"); + letra = 30; + } else if (ch == 'U' | ch == 'u'){ + pc.printf("U"); + letra = 37; + } else if (ch == 'V' | ch == 'v'){ + pc.printf("V"); + letra = 39; + } else if (ch == 'W' | ch == 'w'){ + pc.printf("W"); + letra = 58; + } else if (ch == 'X' | ch == 'x'){ + pc.printf("X"); + letra = 45; + } else if (ch == 'Y' | ch == 'y'){ + pc.printf("Y"); + letra = 61; + } else if (ch == 'Z' | ch == 'z'){ + pc.printf("Z"); + letra = 53; + }else{ + ch = (int)ch; + if (ch == 127){ + pc.printf("<-- \n"); + celda_A = celda_B = celda_C = celda_D = celda_E = 0; + celda = -1; + } else if (ch == 35){ + pc.printf("#"); + letra = 60; + } else if (ch == 124){ + pc.printf("|"); + letra = 40; + } else if (ch == 164 | ch == 165){ + pc.printf("Ñ"); + letra = 59; + } else if (ch == 32){ + pc.printf(" "); + letra = 0; + } else if (ch == 10 | ch == 9){ + celda-=2; + + } + } + imprimir(); +}//termino funcion compu +void imprimir(){ + if (celda == 0){ + celda_A = letra; + }else if(celda == 1){ + celda_B = letra; + }else if(celda == 2){ + celda_C = letra; + }else if(celda == 3){ + celda_D = letra; + }else if(celda == 4){ + celda_E = letra; + } + + if(celda >= 4){ + celda = 0; + } else{ + celda += 1; + } +}// termina funcion imprimir + +void teclado(){ + tiempen = 0; + tiempant = 0; + timeb.start(); + tecladoval_ant = tecladoval; + while((tiempen-tiempant)<250){ + tiempen = timeb.read_ms(); + if (tecladoval != tecladoval_ant){ + tecladoval_ant = tecladoval; + tiempant = tiempen; + } + } + if(tecladoval == tecladoval_ant && tecladoval != 0){ + decodebotons(); + imprimir(); + } + timeb.reset(); +}//termina fincion teclado \ No newline at end of file
diff -r 000000000000 -r 1f31cf981ab4 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun May 11 22:23:55 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/8a40adfe8776 \ No newline at end of file