/* Proyecto de un POV con Arduino controlado desde Android
José Luis Bejarano Vásquez
Mayo 15 de 2015
sistemasymicros.com.co
@sistemasymicros*/
byte largo=0; //Tamaño de la palabra / Size of the word
char letra; //Almacena cada caracter /Stores each letter
String palabra;
int caracterDepurado;
int leds[]={4,5,6,7,8,9,10}; //Array para los leds
const int sensor=2; // sensor de posición
int estado=0;
int _[] = {0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0};
int A[] = {0,1,1,1,1,1,1, 1,0,0,1,0,0,0, 1,0,0,1,0,0,0, 1,0,0,1,0,0,0, 0,1,1,1,1,1,1};
int B[] = {1,1,1,1,1,1,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 0,1,1,0,1,1,0};
int C[] = {0,1,1,1,1,1,0, 1,0,0,0,0,0,1, 1,0,0,0,0,0,1, 1,0,0,0,0,0,1, 1,0,0,0,0,0,1};
int D[] = {1,1,1,1,1,1,1, 1,0,0,0,0,0,1, 1,0,0,0,0,0,1, 1,0,0,0,0,0,1, 0,1,1,1,1,1,0};
int E[] = {1,1,1,1,1,1,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1};
int F[] = {1,1,1,1,1,1,1, 1,0,0,1,0,0,0, 1,0,0,1,0,0,0, 1,0,0,1,0,0,0, 1,0,0,1,0,0,0};
int G[] = {1,1,1,1,1,1,1, 1,0,0,0,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,1,1,1};
int H[] = {1,1,1,1,1,1,1, 0,0,0,1,0,0,0, 0,0,0,1,0,0,1, 0,0,0,1,0,0,0, 1,1,1,1,1,1,1};
int I[] = {1,0,0,0,0,0,1, 1,0,0,0,0,0,1, 1,1,1,1,1,1,1, 1,0,0,0,0,0,1, 1,0,0,0,0,0,1};
int J[] = {0,0,0,0,1,1,0, 0,0,0,0,0,0,1, 0,0,0,0,0,0,1, 0,0,0,0,0,0,1, 1,1,1,1,1,1,0};
int K[] = {1,1,1,1,1,1,1, 0,0,0,1,0,0,0, 0,0,1,0,1,0,0, 0,1,0,0,0,1,0, 1,0,0,0,0,0,1};
int L[] = {1,1,1,1,1,1,1, 0,0,0,0,0,0,1, 0,0,0,0,0,0,1, 0,0,0,0,0,0,1, 0,0,0,0,0,0,1};
int M[] = {1,1,1,1,1,1,1, 0,1,0,0,0,0,0, 0,0,1,1,0,0,0, 0,1,0,0,0,0,0, 1,1,1,1,1,1,1};
int N[] = {1,1,1,1,1,1,1, 0,1,0,0,0,0,0, 0,0,1,0,0,0,0, 0,0,0,1,0,0,0, 1,1,1,1,1,1,1};
int O[] = {0,1,1,1,1,1,0, 1,0,0,0,0,0,1, 1,0,0,0,0,0,1, 1,0,0,0,0,0,1, 0,1,1,1,1,1,0};
int P[] = {1,1,1,1,1,1,1, 1,0,0,1,0,0,0, 1,0,0,1,0,0,0, 1,0,0,1,0,0,0, 0,1,1,0,0,0,0};
int Q[] = {0,1,1,1,1,0,0, 1,0,0,0,0,1,0, 1,0,0,0,0,1,0, 1,0,0,0,0,1,0, 0,1,1,1,1,0,1};
int R[] = {1,1,1,1,1,1,1, 1,0,0,1,0,0,0, 1,0,0,1,0,0,0, 1,0,0,1,0,0,0, 0,1,1,0,1,1,1};
int S[] = {0,1,1,0,0,0,0, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 0,0,0,0,1,1,0};
int T[] = {1,0,0,0,0,0,0, 1,0,0,0,0,0,0, 1,1,1,1,1,1,1, 1,0,0,0,0,0,0, 1,0,0,0,0,0,0};
int U[] = {1,1,1,1,1,1,0, 0,0,0,0,0,0,1, 0,0,0,0,0,0,1, 0,0,0,0,0,0,1, 1,1,1,1,1,1,0};
int V[] = {1,1,1,1,1,0,0, 0,0,0,0,0,1,0, 0,0,0,0,0,0,1, 0,0,0,0,0,1,0, 1,1,1,1,1,0,0};
int W[] = {1,1,1,1,1,1,1, 0,0,0,0,0,1,0, 0,0,0,0,1,0,0, 0,0,0,0,0,1,0, 1,1,1,1,1,1,1};
int X[] = {1,0,0,0,0,0,1, 0,1,0,0,0,1,0, 0,0,1,1,1,0,0, 0,1,0,0,0,1,0, 1,0,0,0,0,0,1};
int Y[] = {1,1,1,0,0,0,0, 0,0,0,1,0,0,0, 0,0,0,0,1,1,1, 0,0,0,1,0,0,0, 1,1,1,0,0,0,0};
int Z[] = {1,0,0,0,0,1,1, 1,0,0,0,1,0,1, 1,0,0,1,0,0,1, 1,0,1,0,0,0,1, 1,1,0,0,0,0,1};
int _0[] = {0,1,1,1,1,1,0, 1,0,0,0,1,0,1, 1,0,0,1,0,0,1, 1,0,1,0,0,0,1, 0,1,1,1,1,1,0};
int _1[] = {0,0,0,0,0,0,0, 0,0,1,0,0,0,0, 0,1,0,0,0,0,0, 1,1,1,1,1,1,1, 0,0,0,0,0,0,0};
int _2[] = {0,1,0,0,0,0,1, 1,0,0,0,0,1,1, 1,0,0,0,1,0,1, 1,0,0,1,0,0,1, 0,1,1,0,0,0,1};
int _3[] = {0,1,0,0,0,1,0, 1,0,0,0,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 0,1,1,0,1,1,0};
int _4[] = {0,0,0,1,1,0,0, 0,0,1,0,1,0,0, 0,1,0,0,1,0,0, 1,1,1,1,1,1,1, 0,0,0,0,1,0,0};
int _5[] = {1,1,1,0,0,1,0, 1,0,1,0,0,0,1, 1,0,1,0,0,0,1, 1,0,1,0,0,0,1, 1,0,0,1,1,1,0};
int _6[] = {0,1,1,1,1,1,0, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 0,1,0,0,1,1,0};
int _7[] = {1,0,0,0,0,0,0, 1,0,0,0,0,0,0, 1,0,0,0,1,1,1, 1,0,0,1,0,0,0, 1,1,1,0,0,0,0};
int _8[] = {0,1,1,0,1,1,0, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 0,1,1,0,1,1,0};
int _9[] = {0,1,1,0,0,1,0, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 0,1,1,1,1,1,0};
int espaciado;
int retardo;
void setup()
{
// Configuro los puertos de entrada y salida / Setting the ports of the leds to OUTPUT and sensor to INPUT
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(sensor,INPUT);
Serial.begin(9600);
Serial.flush();
//Espacio entre cada letra /Space between each letter
espaciado = 9;
// defining the time dots appear (ms)
retardo =3;
}
//***** Para limpiar la columna / For cleaning the column************
void borrar()
{
for(int z=0;z<7;z++)
{
digitalWrite(z+4,LOW);
}
}
//*******************************************
void imprimir(int caracter[])
{
int y;
// Imprime la primera columna /Prints the first column
for (y=0; y<7; y++)
{
digitalWrite(y+4, caracter[y]);
}
delay(retardo);
borrar();
// Imprime la segunda columna /Prints the second column
for (y=0; y<7; y++)
{
digitalWrite(y+4, caracter[y+7]);
}
delay(retardo);
borrar();
// Imprime la tercera columna /Prints the third column
for (y=0; y<7; y++)
{
digitalWrite(y+4, caracter[y+14]);
}
delay(retardo);
borrar();
// Imprime la cuarta columna /Prints the fourth column
for (y=0; y<7; y++)
{
digitalWrite(y+4, caracter[y+21]);
}
delay(retardo);
borrar();
// Imprime la quinta columna /Prints the fifth column
for (y=0; y<7; y++)
{
digitalWrite(y+4, caracter[y+28]);
}
delay(retardo);
borrar();
// printing the space between the letters
for (y=0; y<7; y++)
{
digitalWrite(y+4, 0);
}
delay(espaciado);
}
//*********************************************
void loop()
{
if (Serial.available())
{
Serial.flush(); //Limpio el buffer/Clean the buffer
palabra="";
while (Serial.available() >0)
{
delay(5);
letra = Serial.read(); //Lee cada caracter de la palabra //Reads each letter of the word
palabra = palabra+letra;
} // fin del while
} // fin del if
estado = digitalRead(sensor); //verifico si ya pasó por el sensor de posición / check if already cross the position sensor
largo = palabra.length(); //Calculo la longitud de la palabra / Checks the lenght of the word
if(estado==HIGH) //si ya pasó// if has just crossed
{
for(int x=0;x<largo;x++)
{
char caracter = palabra.charAt(x); //Obtengo cada letra y la almacendo en la variable / Obtains each letter and stores at the variable
caracterDepurado=(caracter-'0');
if (caracterDepurado>0) //Esto es para evitar que se envien caracteres no deseados
{
switch (caracter)
{
case 'A':
imprimir(A);
break;
case 'B':
imprimir(B);
break;
case 'C':
imprimir(C);
break;
case 'D':
imprimir(D);
break;
case 'E':
imprimir(E);
break;
case 'F':
imprimir(F);
break;
case 'G':
imprimir(G);
break;
case 'H':
imprimir(H);
break;
case 'I':
imprimir(I);
break;
case 'J':
imprimir(J);
break;
case 'K':
imprimir(K);
break;
case 'L':
imprimir(L);
break;
case 'M':
imprimir(M);
break;
case 'N':
imprimir(N);
break;
case 'O':
imprimir(O);
break;
case 'P':
imprimir(P);
break;
case 'Q':
imprimir(Q);
break;
case 'R':
imprimir(R);
break;
case 'S':
imprimir(S);
break;
case 'T':
imprimir(T);
break;
case 'U':
imprimir(U);
break;
case 'V':
imprimir(V);
break;
case 'W':
imprimir(X);
break;
case 'X':
imprimir(X);
break;
case 'Y':
imprimir(Y);
break;
case ' ':
imprimir(_);
break;
} //fin del switch
} //fin del if
} //fin del for
} //fin del if estado
} // fin del loop
Comments