Andres Gaffs
/
TabletBrailleconTeclado
Tablet Braille con Teclado
Fork of PRUEBATECLADO by
TabletBrailleconTeclado.cpp
- Committer:
- AndresGaffS
- Date:
- 2014-05-11
- Revision:
- 0:1f31cf981ab4
File content as of revision 0:1f31cf981ab4:
#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