View on GitHub

ft-Controller-I2C

ROBO Pro Coding Blöcke für fischertechnik TXT 4.0 und RX Controller zur Programmierung beliebiger I²C Devices: LCD, OLED Displays, Tastaturen, Sensoren, Motoren, Joystick, GPIO, RTC, EEPROM, Relais, ...

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.


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.

Block buttons_polling


Beim RX Controller muss I²C beim Programmstart initialisiert werden.

Block buttons_interrupt

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.

Block buttons_event