Go Down

Topic: POV 7 leds (Read 1 time) previous topic - next topic

favio-mdp

Aca les dejo una version de arduino pro dedicada a un POV para poder ser colocado en la rueda de una bicicleta y mediante un sensor magnetico se pueda tomar la velocidad y visualizarla en el radio de giro.(aun no temino el codigo).
esta placa tiene 7 led pero puede funcionar con 5 con el codigo que adjunto.
he sabido de problemas de memoria para poder trabajar con 7 leds, en este caso solo lo utilizare para los numeros y las letras son solo 4 Km/h

aqui va el codigo del pov para 5 lineas de leds:

// define el alfabeto
int _[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};
int A[] = {0,1,1,1,1, 1,0,1,0,0, 0,1,1,1,1};
int B[] = {1,1,1,1,1, 1,0,1,0,1, 0,1,0,1,0};
int C[] = {0,1,1,1,0, 1,0,0,0,1, 1,0,0,0,1};
int D[] = {1,1,1,1,1, 1,0,0,0,1, 0,1,1,1,0};
int E[] = {1,1,1,1,1, 1,0,1,0,1, 1,0,1,0,1};
int F[] = {1,1,1,1,1, 1,0,1,0,0, 1,0,1,0,0};
int G[] = {0,1,1,1,0, 1,0,1,0,1, 0,0,1,1,0};
int H[] = {1,1,1,1,1, 0,0,1,0,0, 1,1,1,1,1};
int I[] = {0,0,0,0,1, 1,0,1,1,1, 0,0,0,0,1};
int J[] = {1,0,0,0,0, 1,0,0,0,1, 1,1,1,1,1};
int K[] = {1,1,1,1,1, 0,0,1,0,0, 0,1,0,1,1};
int L[] = {1,1,1,1,1, 0,0,0,0,1, 0,0,0,0,1};
int M[] = {1,1,1,1,1, 0,1,1,0,0, 0,1,1,1,1};
int N[] = {1,1,1,1,1, 1,0,0,0,0, 0,1,1,1,1};
int O[] = {0,1,1,1,0, 1,0,0,0,1, 0,1,1,1,0};
int P[] = {1,1,1,1,1, 1,0,1,0,0, 0,1,0,0,0};
int Q[] = {0,1,1,1,1, 1,0,0,1,1, 0,1,1,1,1};
int R[] = {1,1,1,1,1, 1,0,1,0,0, 0,1,0,1,1};
int S[] = {0,1,0,0,1, 1,0,1,0,1, 1,0,0,1,0};
int T[] = {1,0,0,0,0, 1,1,1,1,1, 1,0,0,0,0};
int U[] = {1,1,1,1,1, 0,0,0,0,1, 1,1,1,1,1};
int V[] = {1,1,1,1,0, 0,0,0,0,1, 1,1,1,1,0};
int W[] = {1,1,1,1,0, 0,0,1,1,0, 1,1,1,1,0};
int X[] = {1,1,0,1,1, 0,0,1,0,0, 1,1,0,1,1};
int Y[] = {1,1,0,0,0, 0,0,1,0,0, 1,1,1,1,1};
int Z[] = {1,0,0,1,1, 1,0,1,0,1, 1,1,0,0,1};

int letterSpace;
int dotTime;

void setup()
{
 // define puertos de salida
 pinMode(2, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);
 
 // define el espacio entre letras (ms)
 letterSpace = 6;
 // define el tiempo del punto (ms)
 dotTime = 3;
 
}

void printLetter(int letter[]) //
{
 int y; // inicializa la variable como un entero
 // recorre el array de cada letra
 // la primera linea Y de la letra
 for (y=0; y<5; y++) // setea y=0, limita y hasta 5 puntos horizontales, comienza a sumar
 {
   digitalWrite(y+2, letter[y]); // (pin 2 al 6, asigna valor 1 o 0) empieza del 1 al 5 de la array
 }
 delay(dotTime); // retiene encendido
 
 // la segunda linea Y de la letra
 for (y=0; y<5; y++)
 {
   digitalWrite(y+2, letter[y+5]); // empieza del 6 al 10 de la array
 }
 delay(dotTime);
 
 // la tercera Linea Y de la letra
 for (y=0; y<5; y++)
 {
   digitalWrite(y+2, letter[y+10]); // empieza del 11 al 15 de la array
 }
 delay(dotTime);
 
 // imprime espacio entre letras
 for (y=0; y<5; y++)
 {
   digitalWrite(y+2, 0);
 }
 delay(letterSpace);
}

void loop()
{
 // palabras
 printLetter(H);
 printLetter(O);
 printLetter(L);
 printLetter(A);
 printLetter(_);
}
la placa tiene los puertos para poder cargar el codigo, conectando los pin 1 y 2 desde una arduino si el micro.

http://www.tirrenia.com.ar/pov-veloz.pdfPlaca
http://www.tirrenia.com.ar/pov-veloz.schesquematico eagle
http://www.tirrenia.com.ar/pov-veloz.brdplaca eagle






;D
mucha suerte.

Go Up