Jose Luis Bejarano Vasquez
Published © GPL3+

Propeller Display Controlled by Android

There are a lot of projects about POV, but this time i wanted to make my own POV controlled from the smartphone with Os android.

BeginnerShowcase (no instructions)7,988
Propeller Display Controlled by Android

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
5 mm LED: Red
5 mm LED: Red
×7
Infrared led
×1
9V battery (generic)
9V battery (generic)
×1
Resistor 221 ohm
Resistor 221 ohm
×8
Photo diode
×1
Resistor 10k ohm
Resistor 10k ohm
×1
DC motor (generic)
×1

Software apps and online services

ArduBt

Story

Read more

Schematics

Circuit diagram

Code

Untitled file

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

Credits

Jose Luis Bejarano Vasquez

Jose Luis Bejarano Vasquez

5 projects • 22 followers
Electronic technologist, software developer and robotic lover.

Comments