ROBO Pro Coding I²C Blöcke von fischertechnik GitLab: ft_Controller_I2C
I²C Module | I²C Hardware, Software | I²C Quellcodedateien, Blöcke
I²C Programmierbeispiele im Überblick
qwiicbutton_int (I²C Buttons, Hardware Interrupt, Optokoppler)
Das Beispiel demonstriert den Hardware Interrupt von zwei I²C Buttons. Die im Button eingebaute LED rot bzw. grün wird beim Klicken an und aus geschaltet. Der I²C DIP Schalter steuert bei der grünen LED die Helligkeit, bei der roten die Blinkfrequenz. Mit der grünen LED kann auch noch ein I²C Relais geschaltet werden.
- Quellcodedateien: i2cCode, qwiicbutton, dipswitch, qwiicrelay, qwiicbutton_int
- I²C Module: 2 Stück I²C Button mit LED rot und grün, I²C DIP Schalter, optional I²C Relais
- → I²C Module mit Hardware Interrupt
- Projekt laden von fischertechnik GitLab: I2C_Buttons_DipSwitch_Relay
Zum Vergrößern auf das Bild klicken.
I²C Module, die eine Eingabe machen wie Buttons, müssen normalerweise in einer dauerhaft Schleife ständig über den I²C-Bus abgefragt werden, ob sich der Zustand geändert hat.
Solche I²C Module haben oft einen zusätzlichen (Löt-) Interrupt-Pin /INT, der außerhalb vom I²C-Bus extra verdrahtet werden kann.
Die I²C Module haben 3,3V Logik, die fischertechnik Controller aber 9V Logik. Um die /INT Leitungen an einen Controller Input anzuschließen, wird ein Optokoppler empfohlen. Der Optokoppler hat am Ausgang einen Fototransistor. Die Controller können am Input einen Fototransistor digital hell/dunkel abfragen. → I²C Module mit Hardware Interrupt
Somit kann der Fototransistor an einem beliebeigen Input I1 bis I8 (beim TXT 4.0 Controller auch C1 bis C4) angeschlossen werden.
Mit dem Block ist Fototransistor hell
wird erkannt, ob ein Hardware /INT von einem I²C Modul aktiv ist, weil ein Button geklickt wurde.
Nur dann wird der I²C-Bus abgefragt.
- Schaltet die Button Interrupts aus.
- Wird beim Programmstart einmal aufgerufen, wenn /INT Pin nicht verdrahtet ist.
- Block buttons_event muss in dauerhaft Schleife abgefragt werden.
- Buttons werden dauerhaft in buttons_event über den I²C-Bus abgefragt (polling).
Beim RX Controller muss I²C beim Programmstart initialisiert werden.
- Schaltet Interrupt when_clicked an und when_pressed aus.
- Wird beim Programmstart einmal aufgerufen, wenn /INT Pin verdrahtet ist.
- TXT 4.0 Ereignis
ist Fototransistor hell
ruft Block buttons_event auf. - RX Controller fragt
ist Fototransistor hell
in dauerhaft Schleife ab. - Buttons werden nur when_clicked in buttons_event über den I²C-Bus abgefragt.
Der TXT 4.0 Controller unterstützt Ereignis Blöcke. Beim Programmstart wird nur der Interrupt bei den Buttons aktiviert.
Über die Hardware und den Optokoppler wird nur dann Code ausgeführt, wenn ein Button geklickt wurde und das Ereignis ist Fototransistor hell
auslöst.
Weil der RX Controller keine Ereignisse untersützt, kann der Fototransistor in einer dauerhaft Schleife abgefragt werden. Auch damit kann der Verkehr auf dem I²C-Bus reduziert werden.
- Fragt über den I²C-Bus ab, ob ein Button geklickt war.
- Wenn ja, wird der /INT Pin deaktiviert (Fototransistor dunkel).
- Die eigene LED wird abwechselnd an/aus geschaltet.
- Der DIP Switch wird über den I²C-Bus abgefragt und steuert
bei der grünen LED die Helligkeit, bei der roten die Blinkfrequenz. - Wie die grüne LED wird auch das Relais über I²C geschaltet.