To MIDI superenkel - Super enkel MIDI Keyboard (5 / 5 steg)
Steg 5: Subir código y conectar - ladda upp koden och ansluta
El código ingen incluye aún las funciones oktav upp, ner y pitch bend (espero incorporarlas en el futuro pŕóximo). Pero permite Camilo las anmärkningar de la octava media para probar que todo funcione correctamente. Tampoco hö funciones asignadas por código en los dos potes (otra promesa en futuro). El skiss hare uso de la librería MIDI y está basado sv FN ejemplo extraído de la página de Adafruit
PRINCIPIO DEL CÓDIGO
/*
Denna skiss är baserad på exempelkod från ADAFRUIT
http://www.adafruit.com/blog/2009/10/20/example-Code-for-multi-Button-Checker-with-debouncing/
och använder MIDI-biblioteket:
http://sourceforge.net/projects/arduinomidilib/
*/
#include < MIDI.h >
#define DÄMPNINGSTID 10 / / debouncer, hur många ms-knappen till Dämpningstid, 5 + ms är oftast gott
här är där vi definiera de knappar som vi använder. knapp "1" är först, "6"-knappen är den 6: e, etc
byte knappar [] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}; den analoga 0-5 stift är också känd som 14-19
Denna behändiga makro låter oss att avgöra hur stor matrisen upp ovan är, genom att kontrollera storleken
#define NUMBUTTONS sizeof(buttons)
Vi kommer att följa upp om en knapp är bara tryckte, just släppt eller "för närvarande tryckt"
byte tryckte [NUMBUTTONS], justpressed [NUMBUTTONS], justreleased [NUMBUTTONS];
void setup() {
MIDI.begin(1); Lansera MIDI med standardalternativen
byte i.
pin13 LED
pinMode (13, OUTPUT);
Gör ingång & aktiverar pull-up motstånd på switch pins
för (jag = 0; jag < NUMBUTTONS; i ++) {
pinMode (knapparna [i], ingång);
digitalWrite (knappar [i], hög);
}
}
void check_switches()
{
statiska byte previousstate [NUMBUTTONS];
statiska byte currentstate [NUMBUTTONS];
statiska lång lasttime;
byte index.
om (millis() < lasttime) {
vi lindade runt, kan bara försöka igen
lasttime = millis();
}
om ((lasttime + DEBOUNCE) > millis()) {
inte tillräckligt med tid har passerat för att Dämpningstid
hemkomst.
}
OK vi har väntat DEBOUNCE millisekunder, kan nollställa timern
lasttime = millis();
för (index = 0; index < NUMBUTTONS; index ++) {
justpressed [index] = 0; När vi börjar, rensa vi ut de "bara" indikatorerna
justreleased [index] = 0;
CurrentState [index] = digitalRead(buttons[index]); Läs på-knappen
om (currentstate [index] == previousstate[index]) {
om ((tryckte [index] == låg) & & (currentstate [index] == låg)) {
bara tryckte
justpressed [index] = 1;
}
annars om ((tryckte [index] == hög) & & (currentstate [index] == hög)) {
precis släppt
justreleased [index] = 1;
}
tryckte [index] =! currentstate [index]; kom ihåg att digital hög betyder inte intryckt
}
Serial.println (pressad [index], DEC);
previousstate [index] = currentstate [index]; hålla en kör stämmer av knappar
}
}
void loop() {
check_switches(); När vi kontrollera växlarna får vi aktuella tillstånd
för (byte jag = 0; jag < NUMBUTTONS; i ++) {
om (justpressed[i]) {
MIDI.sendNoteOn(44+i,127,1);
}
om (justreleased[i]) {
MIDI.sendNoteOff(44+i,127,1);
}
}
}
SLUTLIGA DEL CÓDIGO
La placa puede alimentarse utgående del puerto USB o por el uttag de alimentación (7 en 15 Volt / positivo al medio). El interruptor (o bygel) ubicado a la Izquierda (cerca del kvällarna de 6 tallar) debe estar sv la posición que corresponda en cada caso. Recordá desconectar cualquier dispositivo MIDI de la placa para cargar el código ya que återvi los mismos puertos de comunicación sv ambos casos. ESO es todo! Solo resta conectar un kabel MIDI entre el to y un dispositivo con MIDI IN. espero que lo disfrutes. SI hacés algo con él, mostrame! Rercordá que podés hackear cualquier dispositivo con botones para transformarlo sv FN dispositivo MIDI con esta placa. Gracias po tu atención!
Jorge (Laboratorio de Juguete)
---------------------------------------------------------------------
Du kan programmera detta tangentbord använder Arduino IDE. Det finns två sätt att ladda upp koden. En använder en typisk USB till seriell adapter som de från Adafruit, Arduino eller Sparkfun (andra kort inte kan ha samma pinut men du kan dirigera om dem, titta bara taggarna på den sex stift på bilden nedan). Om du har en av dem, bara ansluta den till styrelsen. Kom ihåg att välja samma styrelse starthanteraren ditt atmega har inuti. Om du inte har någon dessa kort du kan också Programmera chip på din arduino ombord, sedan dra ut en sätta det i uttaget tangentbord.
Koden är mycket grundläggande ännu och har inte oktav upp / ner funktioner eller pitchbend (hoppas att lägga till dem i en nära framtid). Varken göra thei har koden asigned till de två potentiometrar (A4 och A5). Den skiss använder MIDI bibliotek och är baserad på ett exempel från Adafruitsida.
Styrelsen kan vara strömförsörjning via USB-Adapter eller dess stickkontakt (7-15 volt - positiva till center). Växel (eller bygel) på den övre högra sidan av styrelsen måste vändas till en av dessa val. Kom ihåg att koppla bort alla MIDI-enheten är ansluten till styrelsen när du försöker ulpload kod eftersom den använder samma port för både kommunikation. Det är allt. Kom ihåg att du kan använda denna styrelse att hacka någon anordning med knappar och förvandla det till en MIDI-controller. Under tiden, bara Anslut styrelsen med en MIDI-kabel till en ljudmodul eller tangentbord med MIDI IN-uttaget och njut! Tack för er uppmärksamhet!
Jorge (Laboratorio de juguete)