Pages: [1]   Go Down
Author Topic: POV 7 leds  (Read 995 times)
0 Members and 1 Guest are viewing this topic.
Mar del Plata Argentina
Offline Offline
Newbie
*
Karma: 0
Posts: 20
Arduino Argentina
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Pages: [1]   Go Up
Jump to: