Buenas a todos
Llevo un par de semanas trasteando con Arduino y los controladores midi , tenia un proyecto casi terminado , programado de 0 por mi , pero a ultima hora e decidido hacer una modificación y añadir 4 botones mas..¿el problema? Hay que añadir un multiplexor y lo único que encuentro son librerías y copiar y pegar el código , lo que hace que funcione , pero no entiendo lo que estoy haciendo y mi objetivo con esto es aprender , no tener el controlador funcionando lo antes posible
Mis únicos avances en el campo de los multiplexers a sido , leer los valores que arroja , pero no tengo ni idea de como manejarlos como en el ejemplo del codigo en el que el valor "Pinbotones" es un const int que hace referencia a las entradas digitales de Arduino , en este caso "2 , 3 y 4"
Este ejemplo es algo sintetizado de mi código , ya que esta programado con 12 botones , 5 encoders y otros botones para manejar el DAW
Entonces ¿como puedo hacer un código parecido a este metiendo las entradas del multiplexor?¿o soy yo que estoy tan verde que no lo entiendo y lo estoy enfocando de la manera equivocada?
Un saludo
Pd:Adjunto un esquema de como seria con el multiplexer y el código de ejemplo que tengo ahora con las funciones que me interesan
Procesando: 4067.jpg...
#include <MIDI.h>
const int Nbotones = 3;
const int PinBotones[Nbotones] = {2, 3, 4};
int vb[Nbotones] = {0};
int pvb[Nbotones] = {0};
unsigned long lastdebouncetime[Nbotones] = {0};
unsigned long debouncedelay = 20;
//31500 MIDI 115200 HAIRLESS
void setup()
{
Serial.begin(31500);
for (int i = 0; i<Nbotones; i++) {
pinMode(PinBotones[i] , INPUT_PULLUP);
}
}
void loop()
{
for (int i = 0; i<Nbotones; i++) {
vb[i] = digitalRead(PinBotones[i]);
if ((millis() - lastdebouncetime[i]) > debouncedelay)
{
if (pvb[i] != vb[i])
{
lastdebouncetime[i] = millis();
if (vb[i] == LOW)
{
MIDI.sendNoteOn(36+i , 127 ,1);
}
else {
MIDI.sendNoteOff(36+i , 127 ,1);
}
}
pvb[i] = vb[i];
}
}
}```