Hallo,
kann mir jmd. erklären, was hier anstatt "0xB0" letzten Endes ausgegeben wird:
/*
* Pin 13 = Status-LED
* Analog Pin 0 = 4,7kOhm Drehpoti
* Serial-TX geht an Pin 5 der MIDI-Buchse.
*
* Controllerdaten werden gesandt, wenn am Poti gedreht wird.
*
*/
int ledPin = 13;
int poti = 0;
int potVal = 0; // Gelesener Potiwert
int mappedPotVal = 0; // Variable, die den eingelesenen "wertebereichreduzierten" Wert speichert
int prevPotVal = 0; // Variable, die den letzen eingelesenen Wert speichert
int schwellwert = 2; // Schwellwert um bei minimalen Schwankungen nicht auszulösen (ähnlich einer "Deathzone" eines Analogjoypads)
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(31250); // MIDI-Datenversand bei 31250 Baud aktivieren
}
void loop()
{
potVal = analogRead(poti); // Input einlesen
mappedPotVal = map(potVal, 0, 1023, 0, 127); // Wertebereich auf 0-127 reduzieren
if(abs(mappedPotVal - prevPotVal) >= schwellwert)
{
midiOUT(0xB0, 7, mappedPotVal); // "Controller 7"-Daten auf Kanal 1 senden
digitalWrite(ledPin, HIGH);
prevPotVal = mappedPotVal;
}
else
{
digitalWrite(ledPin, LOW);
}
}
void midiOUT(char command, char controllernummer, char ausgabewert) {
Serial.write(command);
Serial.write(controllernummer);
Serial.write(ausgabewert);
}