Tablet Braille con Teclado

Dependencies:   mbed

Fork of PRUEBATECLADO by Andres Gaffs

Files at this revision

API Documentation at this revision

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
--- /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
--- /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