Stap 5: Subir código y verbinden - code uploaden en verbinden
El código geen bevat aún las funciones octaaf omhoog, omlaag y Pitchbend (espero incorporarlas nl el futuro pŕóximo). Pero permite tocar las notas de la octava media para probar que todo funcione correctamente. Tampoco hooi funciones asignadas por código een los dos potes (otra wandelplaats een futuro). El schets hace uso de la librería MIDI y está basado nl un ejemplo extraído de la página de Adafruit
PRINCIPIO DEL CÓDIGO
/*
Deze sketch is gebaseerd op de voorbeeldcode van ADAFRUIT
http://www.adafruit.com/blog/2009/10/20/example-code-for-multi-button-Checker-with-debouncing/
en gebruik MIDI bibliotheek:
http://sourceforge.net/projects/arduinomidilib/
*/
#include < MIDI.h >
#define DEBOUNCE 10 / / button debouncer, hoeveel ms debounce, 5 + ms is meestal veel
Hier is waar we het definiëren van de knoppen die we zullen gebruiken. knop "1" is de eerste, knop "6" is de 6e, etc
byte knoppen [] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}; de analoge 0-5 pinnen zijn ook bekend als 14-19
Deze handige macro laat ons bepalen hoe groot de array van boven is, door de grootte controleren
#define NUMBUTTONS sizeof(buttons)
Wij zullen volgen als een knop wordt gewoon ingedrukt, net vrijgegeven, of 'momenteel ingedrukt'
byte ingedrukt [NUMBUTTONS], justpressed [NUMBUTTONS], justreleased [NUMBUTTONS];
VOID Setup {}
MIDI.begin(1); Lancering van MIDI met standaardopties
byte i;
pin13 LED
pinMode (13, OUTPUT);
Maak input & pull-up weerstanden op schakelaar pinnen inschakelen
voor (ik = 0; ik < NUMBUTTONS; i ++) {}
pinMode (knoppen [i], INPUT);
digitalWrite (knoppen [i], hoge);
}
}
VOID check_switches()
{
statische byte previousstate [NUMBUTTONS];
statische byte currentStatus [NUMBUTTONS];
statische lange lasttime;
byte index;
Als (millis() < lasttime) {}
We gewikkeld, laat gewoon probeer opnieuw
lastTime = millis();
}
Als ((lasttime + DEBOUNCE) > millis()) {}
Er is onvoldoende tijd verstreken om te debounce
terugkeer;
}
OK we hebben gewacht ONTDENDERING milliseconden, laat opnieuw instellen van de timer
lastTime = millis();
voor (index = 0; index < NUMBUTTONS; index ++) {}
justpressed [index] = 0; Wanneer wij beginnen, duidelijk we uit de indicatoren "gewoon"
justreleased [index] = 0;
currentStatus [index] = digitalRead(buttons[index]); Lees de knop
Als (currentStatus [index] == previousstate[index]) {}
Als ((gedrukt [index] == laag) & & (currentStatus [index] == LOW)) {}
gewoon ingedrukt
justpressed [index] = 1;
}
anders als ((gedrukt [index] == HIGH) & & (currentStatus [index] == HIGH)) {}
net vrijgegeven
justreleased [index] = 1;
}
ingedrukt [index] =! currentStatus [index]; Vergeet niet, digitaal hoge middel niet ingedrukt
}
Serial.println (gedrukt [index], DEC);
previousstate [index] = currentStatus [index]; houden van een lopende telling van de knoppen
}
}
void loop {}
check_switches(); Wanneer we de switches controleren zullen we de huidige stand
voor (byte ik = 0; ik < NUMBUTTONS; i ++) {}
Als (justpressed[i]) {}
MIDI.sendNoteOn(44+i,127,1);
}
Als (justreleased[i]) {}
MIDI.sendNoteOff(44+i,127,1);
}
}
}
DEFINITIEVE DEL CÓDIGO
La placa puede alimentarse problem del puerto USB o por el conector de alimentación (7 een 15 Volt / positivo al medio). El interruptor (o jumper) esmerarse a la derecha (cerca del conector de 6 dennen) debe estar en la posición que corresponda een cada caso. Recordá desconectar cualquier dispositivo MIDI de la placa para cargar el código ya que bruikbaar los mismos puertos de comunicación nl ambos casos. Eso es todo! Solo resta verbinden VN kabel MIDI entre el teclado 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 nl VN dispositivo MIDI con esta placa. Gracias po tu atención!
Jorge (Laboratorio de Juguete)
---------------------------------------------------------------------
Dit toetsenbord met behulp van de Arduino IDE kun je programmeren. Er zijn twee manieren van het uploaden van de code. Een is met behulp van een typische USB naar seriële adapter zoals die van Adafruit, Arduino of Sparkfun (andere adapters wellicht niet de dezelfde pinout maar kunt u ze omleiden, kijk de tags op de zes-pinsconnector op de afbeelding hieronder). Als u een van deze, gewoon aansluiten op de Raad van bestuur. Vergeet niet om te kiezen van dezelfde boord van de bootloader die uw atmega heeft binnen. Als u niet een van deze adapters kunt u ook de chip programmeren op je arduino board en vervolgens het uitlichten van een put in de aansluiting van het toetsenbord.
De code is nog erg basic en hoeft niet octaaf omhoog / omlaag functies of pitchbend (hopen dat ze in de nabije toekomst toevoegen). Geen van beide thei hebben code asigned aan de twee potentiometers (A4 en A5). De schets de MIDI bibliotheek gebruikt en is gebaseerd op een voorbeeld van Adafruitpagina.
De Raad van bestuur kunnen powerd via USB-Adapter of de stekker (7 tot en met 15 volt - positief naar het centrum). Switch (of trui) op de hogere rechterkant van het bord moet worden omgezet naar een van deze keuzes. Vergeet niet om de stekker uit elke midi-apparaat dat is aangesloten op het bord wanneer u te ulpload code, probeert omdat het gebruik maakt van dezelfde poort voor beide communicatie. Dat is alles. Vergeet niet dat u dit bord gebruiken kunt voor kappen van elk apparaat met knoppen en zet hem in een MIDI-controller. Ondertussen gewoon het bord met behulp van een midi-kabel aan op een klankmodule of keyboard met MIDI IN-aansluiting aansluiten en genieten! Bedankt voor uw aandacht!
Jorge (Laboratorio de juguete)