Resultados extraños con un LED de segmento de 3x7

3

Estoy intentando obtener un CPS03631BR LED de 3 dígitos y 7 segmentos trabajar. Lo he conectado a mi Arduino UNO así:

Yestoyusandoestecódigo,quedeberíaencendertodoslosLEDsdígitopordígito,luegoencendertodo:

//Diagram:http://search.alkon.net/cgi-bin/pdf.pl?pdfname=13600.pdfconstintdigit[]={9,10,11};constintled[]={2,3,4,5,6,7,8,12};//abcdefgdpvoidsetup(){for(inti=0;i<3;i++){pinMode(digit[i],OUTPUT);}for(inti=0;i<8;i++){pinMode(led[i],OUTPUT);}}voidlights_off(){for(inti=0;i<3;i++){digitalWrite(digit[i],LOW);}for(intj=0;j<8;j++){digitalWrite(led[j],HIGH);}}voidlight_digit(intnumber){switch(number){case0:digitalWrite(digit[0],HIGH);digitalWrite(digit[1],LOW);digitalWrite(digit[2],LOW);break;case1:digitalWrite(digit[0],LOW);digitalWrite(digit[1],HIGH);digitalWrite(digit[2],LOW);break;case2:digitalWrite(digit[0],LOW);digitalWrite(digit[1],LOW);digitalWrite(digit[2],HIGH);break;}}voidlight_num(intnumber){switch(number){case0:digitalWrite(led[0],LOW);digitalWrite(led[1],LOW);digitalWrite(led[2],LOW);digitalWrite(led[3],LOW);digitalWrite(led[4],LOW);digitalWrite(led[5],LOW);digitalWrite(led[6],HIGH);digitalWrite(led[7],HIGH);break;case1:digitalWrite(led[0],HIGH);digitalWrite(led[1],LOW);digitalWrite(led[2],LOW);digitalWrite(led[3],HIGH);digitalWrite(led[4],HIGH);digitalWrite(led[5],HIGH);digitalWrite(led[6],HIGH);digitalWrite(led[7],HIGH);break;case2:digitalWrite(led[0],HIGH);digitalWrite(led[1],HIGH);digitalWrite(led[2],HIGH);digitalWrite(led[3],HIGH);digitalWrite(led[4],HIGH);digitalWrite(led[5],HIGH);digitalWrite(led[6],HIGH);digitalWrite(led[7],HIGH);break;}}voidloop(){digitalWrite(led[0],LOW);digitalWrite(led[1],LOW);digitalWrite(led[2],LOW);digitalWrite(led[3],LOW);digitalWrite(led[4],LOW);digitalWrite(led[5],LOW);digitalWrite(led[6],LOW);digitalWrite(led[7],LOW);digitalWrite(digit[0],HIGH);digitalWrite(digit[1],LOW);digitalWrite(digit[2],LOW);delay(500);digitalWrite(digit[0],LOW);digitalWrite(digit[1],HIGH);digitalWrite(digit[2],LOW);delay(500);digitalWrite(digit[0],LOW);digitalWrite(digit[1],LOW);digitalWrite(digit[2],HIGH);delay(500);digitalWrite(digit[0],HIGH);digitalWrite(digit[1],HIGH);digitalWrite(digit[2],HIGH);delay(500);}

Peroencambio,loqueestoyobteniendoesesto:

enlace

Cuando debería estar encendiendo todos los dígitos, está haciendo un 9 con un punto. Cuando llega al tercer dígito no pasa nada. Cuando todos los LED deben estar ENCENDIDOS, se muestra 33 y el tercer dígito está completamente APAGADO. He probado cada LED individualmente y todos funcionan.

¿Alguna idea?

    
pregunta Nathan Campos

1 respuesta

1

El cableado en su esquema solo concuerda con la hoja de datos hasta el pin 5.

Luego, la hoja de datos implica que el pin 6 falta o está desconectado y los pines restantes 7-12 están conectados. También los pines DIP se numeran convencionalmente hacia abajo por un lado y hacia arriba por el otro. Por lo tanto, su pin número 6 es probablemente Pin 12 en el LED, 7 es probablemente 11, y así sucesivamente hasta que su pin 11 sea la hoja de datos pin 7.

Esto será fácil de confirmar con un multímetro. Una vez confirmado, es reparable en software.

Dave Tweed tiene razón sobre la limitación actual; a menos que simplemente haya omitido las resistencias en el dibujo para simplificarlo. Necesitas 8, probablemente 330R, en los ánodos. (¡3 resistencias en los cátodos variarían el brillo de acuerdo con los datos de la pantalla!)

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas