Go Down

### Topic: POV 7 leds (Read 2323 times)previous topic - next topic

#### favio-mdp

##### May 08, 2009, 05:55 am
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

mucha suerte.

Go Up