Ayuda Led matix no se enciende correctamente ¿Es un problema de hardware o software? [duplicar]

0

Estoy tratando de aplicar ingeniería inversa al proyecto de este video: enlace . Desde el video, hay 10 cables visibles que van de los LED a la mega Arduino. Supongo que están conectados en una matriz de 5x5 (5 filas, 5 columnas) dado que hay 25 teclas en el controlador Midi, por lo que la mayoría debe ser 25 LEDs. Reconstruí el proyecto lo mejor que pude al observar el video, pero mi problema es cuando presiono 3 teclas. Se encienden 5 LED, a diferencia del video original, cuando se presionan 3 teclas y se encienden 3 LED (como se ve en @ 0:50 del vídeo). Este es el problema que tengo: enlace . Estoy pensando que el problema está relacionado con la forma en que mis LED están conectados, pero mis LED están conectados exactamente igual que en el video. no es asi ¿hay algo que podría haber perdido? ¿Cómo puede el proyecto en el video iluminar 3 LED sin tener un problema con los LED adicionales que se iluminan en su matriz? ¿Cómo puedo arreglar mi circuito para replicar el video? Aquí hay algunos de mis consejos para encender un LED cuando se presiona una tecla:

include MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
byte anodes[5] = {30, 32, 34, 36,38};
byte cathodes[5] = {31, 33, 35, 37,39};
byte data1 = 0;

void setPinTo5V(byte pin) //set a pin given to this function to a 5V voltage source
{
pinMode(pin, OUTPUT);
digitalWrite(pin, HIGH);
}

void setPinToGND(byte pin) //set a pin given to this function to a GROUND (GND pin)
{
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
}

void loop() {
MIDI.read();
}

void MyHandleNoteOn(byte channel, byte pitch, byte velocity)
{
data1 = MIDI.getData1();
if (data1==48){//C3
setPinTo5V(anodes[0]);//set pin 30 to 5V
setPinToGND(cathodes[0]);//set pin 31 to GND
delay(1); //do nothing for 1 ms
}

// esto se hace para todas las 25 claves, cualquier ayuda sería apreciada Gracias.

    
pregunta Hjhk90

1 respuesta

0

Un diagrama de circuito de lo que estás haciendo y un primer chequeo de tus ojos :-).
Tiene 6 LED encendidos, no 5, lo que es MUCHO más fácil de explicar.
Los dos grupos adyacentes parecen ser conducidos en paralelo.
es decir, si las claves están en las columnas 1,3,5, entonces las filas 1 y amp; 2 están conectados, ya sea en código o en la placa de circuito.

Con solo 10 cables y 25 LED, tiene 5 columnas y unidades de 5 filas.
Los LEDs 1-5, 6-10, 11-15, ... están conectados a las columnas 1 2 3 4 5 repetidamente y las conexiones de fila están conectadas. Fila 1 = LEDS 1 6 11 16 ...
Fila 2 = LEDS 2 7 12 17 ...
... Fila 5 = LEDS 5 10 15 ...

Debería haber mirado la foto 1 primero. Tus conexiones básicas se ven correctas como las anteriores.

Puede que no haya "N problema de transferencia de clave, ya que los LEDES SON los diodos que necesita para detener NKR.

Suena como software.

Hardware de solución de problemas.

Active 1 fila-columna a la vez usando los 10 cables que conducen en el punto de conexión al microcontrolador.

C 1 2 3 4 5 uno por uno con R1 debe proporcionar una secuencia de los primeros 5 LED.
Lo mismo con C 1 2 3 4 5 y la fila 2.
Luego intente varios R o C a la vez para ver cómo debe comportarse.

Miradas al código, no es obvio cómo se establece pin por pin.
¿Por qué es el límite 48?
= 72_10?

    
respondido por el Russell McMahon

Lea otras preguntas en las etiquetas