TigerJython4Kids | HomeTurtlegrafikRobotikDatenbanken |
DU LERNST HIER... |
ein wichtigstes Protokoll zwischen Sensoren und Mikrocontrollern zu verwenden und einen alphanumerischen Display anzusteuern. |
DAS I2C PROTOKOLL |
In der Sensorik ist es von fundamentaler Wichtigkeit, digitale Daten zwischen einem Microcontroller und daran angeschlossenen Geräten (Aktoren, Sensoren, Displays, usw.) auszutauschen. In einer typischen Anordnung sendet der Mikrocontroller eine Aufforderung an den Sensor, eine Messung durchzuführen und den Messwert zurück zu senden. Um den Verdrahtungsaufwand klein zu halten, sollten dabei nur wenige Verbindungsleitungen nötig sein, auch wenn mehrere Sensoren miteinander am Mikrocontroller angeschlossen werden. Das I2C-Protokoll (ausgesprochen "i-quadrat-c") benötigt nur 4 Leitungen: GND, VDD, SDA(Serial DAta), SCL (Serial CLock), wobei VDD nur dazu verwendet wird, den Sensor zu speisen, also eigentlich nicht zum Protokoll gehört. Alle Geräte sind gleichartig an den 4 Leitungen angeschlossen. Man spricht daher von einer Bus-Struktur. Um die Geräte zu identifizieren, wird eine eindeutige 8bit-lange Adresse verwendet, die bei den Geräten fest eingestellt ist. Die Adresse ist also im dezimalen Bereich 0..255 oder hexadezimal zwischen 0x00 und 0xFF. |
MUSTERBEISPIELE |
Auf der Oxocard ist bereits ein Beschleunigungssensor (Accelerometer) am I2C-Bus angeschlossen. MicroPython unterstützt das I2C-Protokoll mit der Klasse I2C, wobei auf der Oxocard Pinnummer 21 für SDA und Pinnummer 22 für SCL verwendet wird. Eine der wichtigsten Tests bei der Verwendung von I2C-Devices besteht darin, einen Bus-Scan auszuführen, d.h. die Adressen aller richtig angeschlossenen und betriebsbereiten Geräte aufzulisten. Du machst dies mit folgendem Programm: Programm: from oxocard import * from machine import Pin, I2C i2c = I2C(scl = Pin(22), sda = Pin(21)) devices = i2c.scan() for dev in devices: print("%X" % dev) Hast du keine externen Geräte angeschlossen, so wird lediglich die Adresse 0x28 des internen Accelerometers angezeigt.
Um ein I2C-Gerät zu verwenden, ist es nötig, das Datenblatt zu studieren und die entsprechenden I2C-Befehle in Programmcode umzusetzen. Dies ist meist mit grösserem Aufwand verbunden. Darum wird dieser Code für alle in diesem Tutorial verwendeten Geräte in Zusatzmodulen gekapselt, die beim Flashen des Betriebssystems auf die Oxocard kopiert werden. (Ein solches Modul nennt man auch einen Gerätetreiber.) Alle aktuellen Treiber kann man auch von hier herunterladen. Der Treiber für den OLED heisst oled.py und enthält die Klasse Oled(), von der du als erstes eine Instanz erstellst. Dann kannst du eine der folgenden Methoden verwenden:
Im nächsten Programm verwendest die Linien zur Erzeugung eines Moiré-Musters.
|
MERKE DIR... |
dass I2C einen Verbindungsbus mit 4 Leitungen GND, VDD, SDA und SCL hat und jedes Gerät eine eindeutige I2C-Adresse verwendet. Um mit einem Gerät zu kommunizieren, muss ein Treiber vorhanden sein, von dem man nur die Klassen- und Funktionsnamen mit ihren Parametern und Rückgabewerten kennen muss (das sogenannte API (Application Programming Interface)). |
ZUM SELBST LÖSEN |
|