Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: This feature may not be available in some browsers.
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
const int CV2Pin = A0; // (5V or CV2-In) via CV2 potentiometer
uint8_t CC_number=7; // HIER DIE CC-NUMMER EINTRAGEN
uint8_t outchannel=1; // HIER DEN MIDI-KANAL EINTRAGEN
uint8_t CV2;
uint8_t CV2_prev;
boolean CV2_changed=0;
unsigned long CV2raw;
void setup() {
// put your setup code here, to run once:
pinMode(CV2Pin, INPUT);
MIDI.begin();
CV2raw = analogRead(CV2Pin) ;
CV2 = int((CV2raw) / 8);
CV2_prev = CV2;
}
void loop() {
// poti lesen und in Werte zwischen 0 und 127 wandeln
CV2raw = analogRead(CV2Pin) ;
CV2 = int((CV2raw) / 8);
// Wenn sich der Wert um zwei ändert, dann setzen wir ein Flag "CV-changed", das nachher das Senden des CC erlaubt
// Bei kleineren Werten käme es durch das Potirauschen zu ständigem Senden von CCs
if ((((CV2_prev - 2) >= CV2) || ((CV2_prev + 2) <= CV2)) && CV2_changed == 0) {
CV2_changed = 1;
}
if (CV2_changed == 1) {
// Wenn sich der Potiwert geändert hat senden wir
MIDI.sendControlChange(CC_number, CV2, outchannel);;
CV2_prev = CV2;
CV2_changed = 0;
}
}
CV2_changed
während des Loops nie auf 0 zurückgesetzt wird: Wozu braucht man es dann? - 2
und + 2
um CV2_prev
herum eine Art "Sicherheitspolster" gegen jitternde Werte der eingehenden Spannung?Stimmt. Ich hatte da cut&paste aus meinem SQ-3P code gemacht, und da kommt das CV2_changed=0 später. Ich hab es jetzt noch eingefügt.@fanwander
- DaCV2_changed
während des Loops nie auf 0 zurückgesetzt wird: Wozu braucht man es dann?
ja. Ich hatte mit verschiedenen Methoden (zeitbasiert, oder am Raw-Wert) gearbeitet, und das ist einfach die zuverlässigste.- Sind- 2
und+ 2
umCV2_prev
herum eine Art "Sicherheitspolster" gegen jitternde Werte der eingehenden Spannung?