Go Down

Topic: Contador 0-9 display 7 segmentos (Read 7022 times) previous topic - next topic

rega

Apr 10, 2011, 04:45 am Last Edit: Apr 10, 2011, 04:46 am by rega Reason: 1
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!

nayma

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

SrDonGato

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


riscking

Prueba este codigo funciona de maravilla,

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

un saludo.

rega

#4
Apr 16, 2011, 07:03 pm Last Edit: Apr 16, 2011, 07:11 pm by rega Reason: 1
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].

riscking

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

rega

Muchas gracias por el TIP, saludos!

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy