IO Expander

Kommen wir nun zum IO Expander, welcher auf unserem Mainboard liegt. Der IO Expander ist eine I2C-Schnittstelle an dem unsere Sensoren hauptsächlich angeschlossen sind. Der IO Expander erweitert die Pinne des micro:bit, sodass es überhaupt möglich ist all die Sensoren des Joy-Cars zu verwenden.
Hier findest du mehr über den IO Expander.
Im folgenden Beispiel könnt ihr den IO Expander auslesen und die verfügbaren Pins entsprechend beschreiben. Dabei ist es wichtig, die Unterschiede zwischen den verschiedenen Revisionen des IO Expanders zu beachten. Weitere Informationen zu den Revisionen findet ihr hier.
Unterschiede zwischen den Revisionen:
- Revision 1.3: Die Pins 0, 1, und 7 sind frei und können beschrieben werden.
- Ältere Revisionen: Nur Pin 7 ist frei und kann verwendet werden.
Im Beispiel wird zunächst Pin 7 des IO Expanders auf LOW
geschaltet und anschließend wieder auf HIGH
zurückgesetzt. Im Anschluss daran wird der IO Expander in einer Endlosschleife jede Sekunde ausgelesen, um den aktuellen Zustand der Pins kontinuierlich zu überwachen.
Revision
IO Expander auslesen
Dieser Codeblock liest den IO Expander aus und gibt die ermittelten Werte als String zurück. In diesem String repräsentiert die erste Zahl den Status von Pin 0. Die restlichen Zahlen im String entsprechen den Zuständen der weiteren Pins in der Reihenfolge ihrer Nummerierung.
Die zurückgegebenen Daten haben folgende Struktur:
- Linker Geschwindigkeitssensor
- Rechter Geschwindigkeitssensor
- Linker Linetracker
- Mittlerer Linetracker
- Rechter Linetracker
- Linker Hindernissensor
- Rechter Hindernissensor
- Freier Pin 7
- Freier Pin 0 (nur ab Revision 1.3 verfügbar)
- Freier Pin 1 (nur ab Revision 1.3 verfügbar)
Dies ermöglicht eine einfache Überprüfung und Verarbeitung der Pin-Zustände in einer lesbaren und strukturierten Form.
IO Expander beschreiben
Mit diesem Codeblock können die freien Pins des IO Expanders beschrieben werden, indem sie auf HIGH
oder LOW
gesetzt werden. Dabei ist zu beachten, dass die Verfügbarkeit der freien Pins von der Revision des Joy-Cars abhängt. Weitere Informationen zu den Unterschieden zwischen den Revisionen findest du hier. Der Code berücksichtigt diese Unterschiede und stellt sicher, dass nur die Pins beschrieben werden, die für die jeweilige Revision freigegeben sind.
Codebeispiel
Revision & Initialisierung
Zunächst muss die Revision des Joy-Cars definiert werden, um sicherzustellen, dass die nachfolgenden Methoden korrekt auf die jeweilige Version des Joy-Cars angepasst sind. Die Revisionsnummer deines Joy-Cars findest du hier. Diese Revisionsnummer wird einfach in die Variable joycar_rev
eingetragen.
Anschließend wird der IO Expander initialisiert, sodass er für die weiteren Schritte im Programm genutzt werden kann. Die Initialisierung ermöglicht die Kommunikation mit dem IO Expander und stellt sicher, dass die Pins entsprechend der definierten Revision konfiguriert werden können.
IO Expander auslesen
Die Methode fetchSensorData
dient dazu, den IO Expander auszulesen und die erfassten Daten in ein Array namens bol_data_dict
zu schreiben. Dieses Array wird anschließend zurückgegeben. Die Methode passt die Zuordnung der Daten an die Revision des Joy-Cars an.
Bei Revisionen ab 1.3 sind die Geschwindigkeitssensoren nicht mehr an den IO Expander angeschlossen. Stattdessen repräsentieren die 8. und 9. Position im Array die Zustände der freien Pins Pin 0 und Pin 1. Die 0. und 1. Position bleiben weiterhin den Geschwindigkeitssensoren zugeordnet.
Die zurückgegebenen Daten im Array haben folgende Struktur:
- Linker Geschwindigkeitssensor
- Rechter Geschwindigkeitssensor
- Linker Linetracker
- Mittlerer Linetracker
- Rechter Linetracker
- Linker Hindernissensor
- Rechter Hindernissensor
- Freier Pin 7
- Freier Pin 0 (nur ab Revision 1.3 verfügbar)
- Freier Pin 1 (nur ab Revision 1.3 verfügbar)
Diese Struktur stellt sicher, dass alle Sensordaten und freien Pins klar und eindeutig zugeordnet sind, unabhängig von der verwendeten Revision.
IO Expander beschreiben
Die Methode writeIOExpander
ermöglicht das gezielte Setzen der freien Pins des IO Expanders auf HIGH
oder LOW
. Dabei wird:
pin
: verwendet, um den spezifischen Pin auszuwählen, der beschrieben werden soll.value
: gibt an, ob der Pin aufHIGH
(1) oderLOW
(0) gesetzt wird.
Die Methode berücksichtigt die jeweilige Revision des Joy-Cars, um sicherzustellen, dass nur die zulässigen Pins beschrieben werden können:
- Ab Revision 1.3: Pins 0, 1, und 7 können beschrieben werden.
- Vor Revision 1.3: Nur Pin 7 ist verfügbar.
Durch diese Methode wird sichergestellt, dass keine unzulässigen Pins verändert werden, und gleichzeitig ermöglicht sie eine flexible und sichere Steuerung der Pins unabhängig von der Joy-Car-Revision.