Schritt 12: Programmierung mit den Encodern
Encoder-Bibliotheken
Encoder in Ihrem Programm verwenden Sie am einfachsten eine Encoder-Bibliothek verwenden. Früher habe ich die PJRC Encoder Bibliothek.
In Ihrer Skizze, Kopie verwenden der Encoder-Ordner in Ordner "Bibliotheken" Arduino Arduino IDE starten und gehören die Header-Datei in Ihrer Skizze durch Hinzufügen dieser Zeile am oberen Rand der Datei:
Mehr über Bibliotheken auf die Arduino Website.
Dann erstellen Sie einfach ein Mitglied der Encoder-Klasse:
Encoder-Namen (pin_1, pin_2); wo ist der Name, den Sie an den Encoder geben möchten, und pin_1 & pin_2 sind die Pins, wo Sie den Encoder anschließen.
Das ist es, ohne Ärger mit Interrupts, die Bibliothek übernimmt es alles für Sie.
Wenn Sie den Wert des Encoders benötigen, benutzen Sie einfach:
Name.read(); wobei Name der Name gab Sie es früher. Die read-Funktion gibt eine langezurück.
Wenn Sie möchten, nehmen Sie einen kurzen Blick auf die Beispiele, die mit der Bibliothek kommen. (Datei > Beispiele > Encoder)
Relative Nachrichten
Die read-Funktion gibt einen absoluten Wert für die Position (das zurückgesetzt wird, jedes Mal, wenn Sie die macht, aber im Gegensatz zu einem Potentiometer trennen) zurück. Dies ist für die meisten Anwendungen völlig in Ordnung, aber MIDI ist anders: es verwendet relative Zahlen für Drehgeber. Das heißt, dass die Steuerung sendet den Unterschied zwischen den neuen und den alten Wert des Gebers, also wenn zum Beispiel die read-Funktion letzte Wert 96 war, und Sie im Uhrzeigersinn des Encoders für 1 Schritt, der neue Wert wird 97 offensichtlich, aber sollte nicht die Arduino 97 senden. Stattdessen sendet den Unterschied: 97-96 = + 1. Wenn Sie 1 Schritt gegen den Uhrzeigersinn gedreht, wäre es -1. Einfach.
Was ist mit weiteren Schritten? Wenn Sie die Encoder für schnell, sagen 4 Schritte drehen, es gibt 2 Dinge, die passieren kann: eins, das Arduino sendet seine MIDI schnell genug den Encoder mindestens 4 Mal zu lesen, während Sie es aktivieren. Dies bedeutet, dass es 4 Nachrichten mit "+ 1" gesendet werden. Zwei, wenn es nicht schnell genug, um die read-Funktion 4 Mal aktualisieren, werden sie feststellen, dass read-Funktion mehr als 1 Schritt seit dem letzten Mal verändert hat. Zum Beispiel die read-Funktion letzte Wert war 97, 4 Schritten biegen Sie und lesen Sie noch einmal. Dadurch erhalten Sie 101: 101 - 97 = 4. Kein Problem, sendet der Arduino nur 1 Nachricht mit "+ 4".
Möglicherweise gibt es ein paar Probleme mit der Anwendungskompatibilität, da Sie keine wirklich negative Zahlen über MIDI senden können. Es gibt drei Möglichkeiten, die Vorzeichen einer Zahl zu senden.
- Fügen Sie 64. Dies ist wahrscheinlich die einfachste. Diese Karten im Grunde 0 bis 64 (das 128/2). Zum Beispiel wenn ich-1 senden möchten, fügen ich 64, = 63 und ich es schicken. Wenn ich + 1 senden möchten, ich auch hinzufügen, 64, 65 =. Wenn ich nur 64 schicken, der Computer wird nichts tun, weil es weiß, dass es eine Verschiebung von 0. (Auf der Computerseite, subtrahieren sie nur 64, und können Sie das Ergebnis, wie nichts passiert.)
- Vorzeichenbit. Signierte Werte werden auf Computern meist mit einem Vorzeichenbit gespeichert. Das Vorzeichenbit ist das höchstwertige Bit. Wenn es 0 ist, die Zahl, die durch die anderen Bits definiert ist positiv, wenn es 1, die Zahl ist negativ. In einer MIDI-Nachricht, das ist etwas 6 (7. Bit, denn es ist 0-basiert). Zum Beispiel: + 4 wäre 0b00000100, und-4 wäre 0b01000100.
- Ein Drittel geht um + 1, 0 und-1 als 127 zu definieren. Wir können dies weiter: + 2 = 1 und-2 = 126, etc. bis + 63 = 63 und-63 = 65.
Also, wenn Ihr Encoder seltsame Dinge in Ihre jeweilige Software tut, können wie ein Sprung wirklich weit, wenn Sie nur einen Schritt drehen Sie dies in Ihrem Programm ändern.
Aber vielleicht müssen wirklich Sie Ihr eigenes Programm schreiben...