Paso 7: Programación (lectura y pruebas de los interruptores de pedal)
Siempre que empiezo un nuevo proyecto de hardware y estoy listo para escribir el código, siempre pruebo todas las entradas y salidas con un poco del bosquejo escupe a todos sus valores hacia fuera en el monitor serial. De este modo puedo ver que todo funciona antes de comenzar incluso el código real. Guardar este código específico de proyecto para más adelante viene muy bien ya que hay veces donde voy a tener que subirlo otra vez, porque algo no funciona, o porque he agregado otro interruptor que necesita inicial de prueba. Con el monitor serial para depurar y probar siempre es complicado con aplicaciones MIDI, ya que comparten el puerto serie TX del Arduino. (solamente uno o el otro puede utilizar el puerto serie) Requiere comentando tus líneas de comunicación Serial y tenga las líneas MIDI, o viceversa. Usted quiere asegurarse de que su salida es justo antes de que usted comience a enviar mensajes MIDI, ya que será algo ciego a menos que utilice un MIDI control de aplicación.
byte pedalPins [12] = {2,3,4,5,6,7,8,9,10,15,17,16}; los pernos de la Arduino cada pedal está en
byte lastPin [12] = {0,0,0,0,0,0,0,0,0,0,0,0};
byte currentPin [12] = {0,0,0,0,0,0,0,0,0,0,0,0};
para (int x = 0; x < 12; x ++) {}
currentPin[x]=digitalRead(pedalPins[x]);
si (currentPin[x]!=lastPin[x]) { / / actual y último PIN no partido, un evento ocurrido
lastPin [x] = currentPin [x];
Si (currentPin[x]==0) {Serial.print ("Pedal"); Serial.Print(x+1); Serial.println ("Up"); }
Si (currentPin[x]==1) {Serial.print ("Pedal"); Serial.Print(x+1); Serial.println ("abajo"); }
};
}
}
Cuando se trabaja con un interruptor momentáneo, con el fin de evitar repetidas desencadenantes del interruptor son empujados como el bucle se ejecuta repetidamente, almacenar el valor "pasado" que tenía el interruptor y generalmente comparar el valor actual que se acaba de leer. Entonces podemos ver que los dos valores no coinciden, así que sabemos que algo cambió. Pensar en este cambio como un evento donde algo tiene que suceder. En el caso de los pedales es la lógica cambia de 0 a 1, o 1 a 0 (interruptor cerrado o abierto). Basado en la dirección del evento hacer diferentes acciones, como enviar una nota de MIDI o nota mensaje. En el código anterior estamos almacenando 12 valores actuales y pasados separados, uno para cada pedal. Esto nos permite pulsado el pedal #1 y después empuje el pedal #5 mientras estamos celebrando #1 porque siguieron todo independientemente. La importancia de este MIDI es que necesita enviar mensajes de nota Off correspondientes cada vez que lanzáis una nota con nota en. Si no, cualquier sintetizador conectado a seguir tocando las mismas notas gruñonas y eventualmente usted tendrá 12 notas en al mismo tiempo sin nada que decir stop tocar la nota. Jugarán para siempre hasta que usted regrese a su sintetizador.
El anterior recorte de código de prueba funciona, pero es muy animoso con repetido arriba/abajo desencadenantes como el pedal se empuja o dejar ir (sobre todo cuando te quitas tu pie, como el pedal rebota literalmente para arriba debido al mecanismo de resorte). ¡ Debounce en el siguiente paso.