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

qwiicmux_rx (RX Controller mit I²C Multiplexer, 10 I²C Module)

Im Beispiel werden 10 I²C Module vom RX Controller gesteuert:

Der I²C Multiplexer kann 8 I²C-Busse einzeln oder gemeinsam an und aus schalten. Gebraucht wird das unter anderem, um mehrere I²C Module mit gleicher I²C-Adresse gleichzeitig zu benutzen.
Der Multiplexer ermöglicht aber auch dem RX Controller mehr als 2 bis 3 I²C Module anzusteuern. Der Grund ist nicht bekannt, aber der RX Controller scheitert an zu vielen I²C-Adressen, nicht an zu vielen I²C Modulen.

Wenn mit dem Multiplexer immer nur ein Kanal mit 1 oder 2 I²C Modulen (= I²C-Adressen) zugeschaltet wird, kann der RX Controller 10 und mehr Module ansteuern. An der 3,3V Stromversorgung scheitert das nicht. Die Displays zeigen Datum und Uhrzeit an. Das große OLED Display zeigt abwechselnd eine Analoguhr und 16 Dateinamen von der Speicherkarte an. Aus dem EEPROM kommen die Pixel, damit OLED Zeichen anzeigen kann. GPIO liest 8 Tasten von der Modelleisenbahn Tastatur und zeigt diese binär und als ASCII Zeichen an. Mit dem Keypad kann die Uhr gestellt werden. Der Abstand vom Ultraschallsensor wird ebenfalls angezeigt.

Block qmux_rx1


Zum Vergrößern auf das Bild klicken.


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

Block Programmstart

Im Hauptprogramm kann zur Kontrolle aller I²C Module jeder Kanal vom Multiplexer einzeln an geschaltet und i2c_scan aufgerufen werden.

Ausgabe in Konsole:

Start [‘0x70’]
0 [‘0x8’, ‘0x2a’, ‘0x70’]
1 [‘0x8’, ‘0x4b’, ‘0x70’]
2 [‘0x8’, ‘0x70’, ‘0x72’]
3 [‘0x8’, ‘0x27’, ‘0x70’]
4 [‘0x8’, ‘0x9’, ‘0x70’]
5 [‘0x8’, ‘0x3d’, ‘0x50’, ‘0x70’]
6 [‘0x8’, ‘0x51’, ‘0x70’]
7 [‘0x8’, ‘0x3c’, ‘0x70’]