matriz LED 3x3 arduino

Estoy tratando de obtener una matriz de 3x3 con multiplexación en funcionamiento. He aquí mi arreglo:

texto alternativo

He conectado los cátodos de cada fila y los ánodos de cada columna y los he conectado a los pines 0,1,2 resp. 8,9,10

lo único que puedo iluminar es la fila más baja, pero si quiero iluminar la fila del medio, por ejemplo, con esto:

digitalWrite(8, HIGH);     
digitalWrite(9, HIGH);     
digitalWrite(10, HIGH);     

digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);

no pasa nada.

¿Mi configuración de cableado es incorrecta, tal vez?

¿Estás seguro de que tienes la polaridad de todos tus LED correctos?
¿Tiene los modos de pin necesarios configurados para la salida? por ejemplo pinMode(8, SALIDA); pinMode(9, SALIDA); pinMode(10, SALIDA); pinMode(0, SALIDA); pinMode(1, SALIDA); pinMode(2, SALIDA);
@vicatu, votaría eso como respuesta. (Eh, en 2 horas, cuando se borre mi límite diario).
Gracias por la foto. Parece que estás bien encaminado hacia un proyecto increíble. :-)

Respuestas (4)

Aquí hay un bosquejo de lo que ha descrito para mayor claridad y beneficio para los demás:

Cosas buenas que hacer en este punto:

  • Asegúrese de tener resistencias limitadoras de corriente en serie con cada LED. 560Ω se limitará a ~6mA. Si no están en su lugar actualmente, algunos LED pueden estar quemados, así que revíselos. El ATmega128/328 (cualquiera que esté en su placa) está limitado a *20mA por pin**.
  • Verifique que los pines realmente estén subiendo o bajando cuando los programe para hacerlo, con un voltímetro o una sonda lógica.

* Debo corregirme, aquí. Esta es la restricción real:

27.1 Valores nominales máximos absolutos
AVISO: Las tensiones más allá de las enumeradas en "Valores nominales máximos absolutos" pueden causar daños permanentes al dispositivo. Esta es solo una clasificación de estrés y no implica la operación funcional del dispositivo en estas u otras condiciones más allá de las indicadas en las secciones operativas de esta especificación. La exposición a condiciones de clasificación máxima absoluta durante períodos prolongados puede afectar la confiabilidad del dispositivo. ...

DC Current per I/O Pin             40.0 mA  
DC Current V and GND Pins       200.0 - 400.0 mA 

...
Aunque cada puerto de E/S puede hundirse más que las condiciones de prueba (20 mA a VCC = 5 V, 10 mA a VCC = 3 V) en condiciones de estado estable (no transitorio), se debe observar lo siguiente: TQFP y QFN /Paquete MLF: 1] La suma de todas las LIO, para todos los puertos, no debe exceder los 400 mA. 2] La suma de todas las LIO, para los puertos A0 - A7, G2, C3 - C7 no debe exceder los 100 mA. 3] La suma de todas las LIO, para los puertos C0 - C2, G0 - G1, D0 - D7, XTAL2 no debe exceder los 100 mA. 4] La suma de todas las LIO, para los puertos B0 - B7, G3 - G4, E0 - E7 no debe exceder los 100 mA. 5] La suma de todas las LIO, para los puertos F0 - F7, no debe exceder los 100 mA. Si la LIO supera la condición de prueba, el VOL puede superar la especificación relacionada. No se garantiza que los pines absorban una corriente mayor que la condición de prueba indicada.

Una resistencia para cada pin de controlador de fila y una resistencia para cada pin de controlador de columna (en este caso, 6 resistencias) funcionarán muy bien, ya sea que el software explore filas o columnas o ambos. La mayoría de las matrices de LED solo colocan resistencias en los pines del controlador de columna, o solo colocan resistencias en los pines del controlador de fila. (En este caso, 3 resistencias). Eso funciona bien siempre y cuando el software y el hardware estén de acuerdo en si está escaneando filas o escaneando columnas.

Sin limitación de corriente, cuenta con el micro para limitar la corriente. Al encender varias salidas a la vez, se consume mucha corriente. Agregaría 3 resistencias al bus alto, 330-560 ohmios a las salidas en 8, 9, 10. Encienda solo un LED a la vez. Si necesita la aparición de varios LED encendidos a la vez, puede sincronizar las salidas más rápido en sucesión.

No creo que puedas multiplexar así. Está utilizando todos esos pines como salidas, es decir, digitalWrite (X, HIGH) hace que la salida del pin X sea de +5 voltios. Para usar dos salidas juntas, necesita algún tipo de interruptor (por ejemplo, una puerta AND o alguna configuración de transistores). Diría que sería mejor usar un registro de desplazamiento (3 entradas a 8) o simplemente usar 9 líneas de salida de la placa, una para cada LED, luego escribir el código para controlar la matriz.

Espero que esto ayude :)

Su configuración parece correcta. Sin embargo, los pines digitales 0 y 1 de Aruino también son entrada/salida en serie. Si también está utilizando comunicación en serie, no puede usarlos como entrada digital. Intenta usar otros pines.