MIDI-Light Show (3 / 7 steg)
Steg 3: Midi begrepp...
MIDI skickar information med 3 byte av information på en överföringshastighet av 31250. Den första byten bestämmer om en anteckning är aktiverat, den nästa byten avgör vad Beck spelas och den tredje byten av anteckningen. Det är viktigt att komma ihåg ordningen på informationen som om du inte anger koden för att läsa i den här ordningen för endast 3 bytes, roliga saker börjar hända. Lita på oss.
Överväg följande kod:
läser den seriella porten för att se om det finns någon inkommande information
Boolean check_midi()
{
medan (Serial.available() > = 3) //when tre byte tillgängligt
{
om (Serial.available())
{
digitalWrite(3,HIGH);
location_byte = Serial.read (); //read första byten
in_note = Serial.read (); //read nästa byte
in_volume = Serial.read (); //read sista byte
return true;
}
}
}
Denna funktion kontroller när det finns 3 tillgängliga byte att läsa, och sätter dem i lämpliga variabler och slutligen returnerar sant när jobbet är komplett. Variablerna är globala eftersom de används i andra funktioner. Visst, det finns många andra bra sätt det skulle förmodligen vara mycket snyggare inom C++, men för minnesstorlek, det skadar inte för att vara lite rörig i Arduino. (Precis så länge du kan hålla reda på vad som händer!) Som för produktionen, om du vill skicka din musik ur skölden, överväga denna kod:
Här är funktionen internet för att skriva ut på planen
void midi_send (byte cmd, byte Obs, byte volym)
{
Serial.write(CMD);
Serial.write(Note);
Serial.write(Volume);
}
Denna kod får 3 byte och skriver dem (i ordning!) till den seriella porten på Arduino. Detta kommer att skicka den på eller inaktivera kommandot, planen och till volymen via den yttre linjen. VIKTIGT! --Om du använder en USB-kabel att resa från datorn till Arduino, Observera att kablarna är spegelvänd så att i kabeln går till ut; och ute går in i den i. Annars blir det många problem och du kommer att bli kvar med frustration. Lita på oss...