Pages: [1]   Go Down
Author Topic: Contador 0-9 display 7 segmentos  (Read 5187 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola amigos, soy nuevo en esto y quiero aprender. Un amigo que es programador me ayudó con un programa para el arduino que cuente del 0 al 9 en un display de 7 segmentos. Al momento de cargarlo realiza la cuenta de manera correcta, pero después algunos números ya no se ven bien y después de un rato más se vuelve loco y muestra datos muy rápido en el display que no se alcanzan a distinguir. Este es el código:

char numero[10][8]={"1000000","1111001","0100100","0110000","0011001","0010010","0000010","1111000","0000000","0010000"};
int puerto[7]={2,3,4,5,6,7,8};

void setup() {
  int i;
  for (i=2; i<=8; i++)
    pinMode(i, OUTPUT);
}

void loop() {
  int i=0, p=0;
  for(p=0;p<10;p++)
  {
    for(i=0;i<8;i++){
      if(numero[p]=='1') digitalWrite(puerto, HIGH);
      else digitalWrite(puerto, LOW);
    }
    delay(1000);
  }
}

¿Qué es lo que está mal en el programa, por qué hace eso?


Yo hice otro programa sacando los datos necesarios para que encienda cada segmento y si me funcionó sin problema, pero es mucho más largooo.

De antemano gracias por su ayuda!
« Last Edit: April 09, 2011, 09:46:56 pm by rega » Logged

0
Offline Offline
God Member
*****
Karma: 1
Posts: 524
Arduino inside
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

¿Nos puedes decir porque no te funciona? A mi me parece que solo se te pone en estado HIGH cuando p es igual a 1. Además puerto es una tabla de los 7 elementos del display, por lo tanto tendrás que poner puerto[1] por ejemplo.
Logged

Ciudad Real
Offline Offline
God Member
*****
Karma: 1
Posts: 747
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

se le puede pasar un array de int a digitalwrite ??

en los FOR anidados haces el recorrido por la matriz pero no haces el recorrido por el pin que debes activar o no,

aprovecha la variable i en cada momento.

     if(numero[p]=='1') digitalWrite(puerto{i], HIGH);
      else digitalWrite(puerto, LOW);

Un cordial saludo

Logged

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prueba este codigo funciona de maravilla,

http://www.hacktronics.com/Tutorials/arduino-and-7-segment-led.html

un saludo.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por su ayuda, ya quedó solucionado el problema. Se cambió el tipo de variable y listo! Les pongo el programa.


char numero[10][8]={"1000000","1111001","0100100","0110000","0011001","0010010","0000010","1111000","0000000","0010000"};
byte puerto[7]={2,3,4,5,6,7,8};

void setup() {
  byte i;
  for (i=2; i<=8; i++)
    pinMode(i, OUTPUT);
}

void loop() {
  byte i, p;
  for(p=0;p<10;p++)
  {
    for(i=0;i<8;i++){
      if(numero[p]{i]=='1') digitalWrite(puerto{i], HIGH);
      else digitalWrite(puerto{i], LOW);
    }
    delay(50);
  }
}

NOTA: Al publicar en el foro no aparece la i entre corchetes, por tal motivo le puse {i].
« Last Edit: April 16, 2011, 12:11:26 pm by rega » Logged

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Me legro, cuando publiques en el foro un codigo hay un boton de almoadilla encima que q es para escribir codigo y que no haya problemas.
un saludo
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muchas gracias por el TIP, saludos!
Logged

Pages: [1]   Go Up
Jump to: