Skip to main content

I2C

Die in diesem Kapitel beschriebenen I2C-Sensoren werden über ein geeignetes Flachbandkabel mit dem TXT-4.0-Controller verbunden.

Der "Starte jedes Mal"-Block

Der "Starte jedes Mal"-Block bietet die Möglichkeit ein Programm ablaufen zulassen, wenn eine Bedingung erfüllt ist. Er funktioniert also ähnlich wie eine Fallunterscheidung, wird aber nicht nur einmal durchlaufen, sondern jedes Mal, wenn die Bedingung erfüllt ist, während des gesamten Ablauf des Programms. Der "Starte jedes Mal"-Block:

image-1623699269854.33.13.png

Ist eine Abkürzung für folgendes Konstrukt:

image-1638372436179.png

Man kann in den "Starte jedes Mal"-Block der Kategorie I2C alle Bedingungen aus ebendieser Kategorie einsetzen.

Hinweis: Der Programmabschnitt innerhalb des "Starte jedes Mal"-Block sollte kurz gehalten werden und keine blockierenden Aufrufe oder Endlosschleifen enthalten, sodass dieser Teil des Programms schnell abgearbeitet werden kann.

Gestensensor

image.png

Der Gestensensor kombiniert Funktionen zur Erkennung von Handgesten, Farbmessung, Umgebungshelligkeit und Distanzmessung in einem Bauteil.

Aktivieren / Deaktivieren

Der Block "Gestensensor [] [] []" ermöglicht das Ein- und Ausschalten spezifischer Funktionen des Gestensensors. Über das Dropdown-Menü (kleines Dreieck) kann ausgewählt, ob das Licht, die Entfernungsmessung oder die Gestenerkennung aktiviert oder deaktiviert werden soll.

image.png

Abrufen

Der Block "hole Gestensensor [] []" ermöglicht es, viele verschiedene Daten vom Gestensensor abzurufen. Je nach Auswahl im Dropdown-Menü können folgende Informationen erhalten werden:

  • HEX: Dies gibt den Farbwert im hexadezimalen Format an.
  • RGB: Liefert die Intensitätswerte für die roten, grünen und blauen Komponenten einer Farbe. Dies ermöglicht eine detaillierte Analyse der Farbzusammensetzung. Optional kann sich auch auf eine einzelne Farbkomponente konzentriert werden.
  • HSV: Bietet eine Darstellung der Farben durch Hue (Farbton), Saturation (Sättigung) und Value (Helligkeitswert). Diese Methode wird oft für eine genauere und intuitivere Farbanalyse verwendet als RGB. Auch hier kann optional eine spezifische Komponente zur detaillierten Analyse gewählt werden.
  • Umgebungslicht: Misst die Lichtintensität in der Umgebung des Sensors und gibt sie als numerischen Wert aus.
  • Entfernung: Zeigt die gemessene Distanz zu einem Objekt oder einer Oberfläche vor dem Sensor.
  • Geste: Dient dazu, die aktuell erkannte Geste von dem Gestensensor abzurufen 

image.png

Abfragen

Der Block "ist Gestensensor [] [] [] ...", der als Bedingung dient, übernimmt folgende Funktionen:

  • RGB-Werte (Rot, Grün, Blau): Mit der Auswahl einer RGB-Farbe ermöglicht der Block "ist Gestensensor" das Reagieren auf spezifische Farbwerte. Im Dropdown-Menü kann ausgewählt werden, ob Rot-, Grün- oder Blauwerte abgefragt werden. Vergleichsoperatoren (<, ≤, =, ≠, ≥, >) und ein Wert im Zahlenfeld legen fest, ob die Bedingung erfüllt ist, z.B. um bei einem bestimmten Farbwert einen Motor zu stoppen oder eine andere Aktion auszulösen.

  • HSV-Werte (Hue, Saturation, Value): Mit der Auswahl einer HSV-Eigenschaft bietet der Block eine alternative Methode zur Farberkennung, die oft für präzisere Farberkennung verwendet wird. Über das Dropdown-Menü kann der Hue-, Saturation- oder Value-Wert eingestellt und verglichen werden, was eine feinere Steuerung ermöglicht.

  • Umgebungslicht: Mit der Auswahl von "Umgebungslicht" im Block "ist Gestensensor" kann das allgemeine Lichtniveau gemessen werden. Diese Funktion kann programmatisch genutzt werden, um bei geringer Beleuchtung automatisch Aktionen wie das Ausschalten eines Motors zu veranlassen.

  • Entfernung: Durch die Auswahl von "Entfernung" kann bestimmt werden, wie weit ein Objekt entfernt ist. Über das Dropdown-Menü und das Zahlenfeld lassen sich spezifische Abstände einstellen, bei denen das Programm reagieren soll, etwa durch das Anhalten oder Starten von Bewegungen.

  • Geste: Prüft, ob die vom Sensor erkannte Geste der angegebenen Geste entspricht.

Das folgende Beispiel zeigt, wie der Block "ist Gestensensor" verwendet wird, um auf einen spezifischen Zustand zu reagieren. Im dargestellten Fall wird geprüft, ob der Rotwert (RGB red) des Gestensensors gleich 0 ist. Ist diese Bedingung erfüllt, führt das Programm eine Aktion aus - hier das Stoppen eines Motors.

image.png

Umweltsensor

image-1623698078892.05.11.png

Der Umweltsensor vereint die vier Funktionen Luftqualitätssensor, Luftfeuchtigkeitssensor, Barometer und Thermometer in einem Bauteil.

Luftfeuchtigkeitssensor

Abrufen

Mit dem Block "hole Umweltsensor [] Luftfeuchtigkeit" kann man die Luftfeuchtigkeit messen.

Abfragen

Um abzufragen, ob man eine bestimmte Luftfeuchtigkeit misst, wird der Block "ist Umweltsensor [] Luftfeuchtigkeit [] ..." genutzt. Über das Dropdown-Menü (kleines Dreieck) kann ausgewählt, wie die Luftfeuchtigkeit mit dem eingegebenen Wert verglichen werden soll (<, ≤, =, ≠, ≥, >). Der Vergleichswert wird in das Zahlenfeld am Ende des Blocks eingegeben. Dieser Block kann als Bedingung genutzt werden. Im Beispiel wird der Motor gestoppt, wenn die Luftfeuchtigkeit größer als 10 ist.

image-1623698885254.png

Luftqualitätssensor

Abrufen

Mit dem Block "hole Umweltsensor [] Luftqualität als []" kann man die Luftqualität messen. Über das Dropdown-Menü (kleines Dreieck) kann gewählt werden, ob die Luftqualität als Zahlenwert (von 0 bis 500) oder als Text zurückgegeben werden soll. 

Abfragen

Um abzufragen, ob man eine bestimmte Luftqualität misst, wird der Block "ist Umweltsensor [] Luftqualität [] ..." genutzt. Über das Dropdown-Menü (kleines Dreieck) kann ausgewählt, wie die Luftqualität mit dem eingegebenen Wert verglichen werden soll (<, ≤, =, ≠, ≥, >). Der Vergleichswert wird in das Zahlenfeld am Ende des Blocks eingegeben. Dieser Block kann als Bedingung genutzt werden. Im Beispiel wird der Motor gestoppt, wenn die Luftqualität größer als 10 ist.

image-1623698959786.png

Barometer

Abrufen

Mit dem Block "hole Umweltsensor [] Luftdruck" kann man den Luftdruck messen.

Abfragen

Um abzufragen, ob man einen bestimmten Luftdruck misst, wird der Block "ist Umweltsensor [] Luftdruck [] ..." genutzt. Über das Dropdown-Menü (kleines Dreieck) kann ausgewählt, wie der Luftdruck mit dem eingegebenen Wert verglichen werden soll (<, ≤, =, ≠, ≥, >). Der Vergleichswert wird in das Zahlenfeld am Ende des Blocks eingegeben. Dieser Block kann als Bedingung genutzt werden. Im Beispiel wird der Motor gestoppt, wenn der Luftdruck größer als 10 ist.

image-1623699106255.png

Thermometer

Abrufen

Mit dem Block "hole Umweltsensor [] Temperatur" kann man die Temperatur messen.

Abfragen

Um abzufragen, ob man eine bestimmte Temperatur misst, wird der Block "ist Umweltsensor [] Temperatur [] ..." genutzt. Über das Dropdown-Menü (kleines Dreieck) kann ausgewählt, wie die Temperatur mit dem eingegebenen Wert verglichen werden soll (<, ≤, =, ≠, ≥, >). Der Vergleichswert wird in das Zahlenfeld am Ende des Blocks eingegeben. Dieser Block kann als Bedingung genutzt werden. Im Beispiel wird der Motor gestoppt, wenn die Temperatur größer als 10 ist.

image-1623698910824.png

Kalibrierungsmanagement

Genauigkeit abrufen

Der Block "hole Umweltsensor [] Genauigkeit" ermöglicht das Abrufen der Genauigkeitsstufe der Luftqualitätsmessung des Umweltsensors. Die Genauigkeit wird auf einer Skala von 0 bis 3 bewertet, wobei jede Zahl eine spezifische Bedeutung hat:

  • 0: Dieser Zustand dient als Startzustand. Der Sensor ist bisher nicht stabilisiert.
  • 1: Kalibrierung erforderlich. Eine Kalibrierung sollte initiiert werden.
  • 2: Kalibrierung läuft. Der Sensor ist aktiv in der Kalibrierungsphase.
  • 3: Kalibrierung abgeschlossen. Der Sensor erreicht nun seine beste Leistung bei der Luftqualitätsmessung.

In dem Beispiel wird, wenn die Genauigkeit der vom Umweltsensor gemessenen Daten gleich 3 ist, d.h. der Sensor stabilisiert ist, eine Aktion ausgelöst.

image.png

Prüfen, ob Kalibrierung erforderlich ist

Der Block "ist Kalibrierung von Umweltsensor [] erforderlich" dient spezifisch dazu, zu prüfen, ob die Genauigkeit des Umweltsensors den Wert 1 erreicht hat, was anzeigt, dass eine Kalibrierung erforderlich ist.

image.png

Kalibrierungsprozess starten

Der Block "kalibriere Umweltsensor []" startet den Kalibrierungsprozess des Sensors. Dieser Vorgang soll die Genauigkeit des Sensors verbessern und sicherstellen, dass die gemessenen Umweltdaten verlässlich sind.

Kombisensor

image-1623698066081.05.44.png

Der Kombisensor vereint die drei Funktionen Beschleunigungssensor, Gyroskop und Kompasssensor in einem Bauteil.

Beschleunigungssensor

Initialisierung

Der Block "Init Accelerometer [] Bereich: [] (g) Bandbreite: [] (Hz) Kompensation: []" dient zur Initialisierung des Beschleunigungssensors mit bestimmten Konfigurationen. Die Einstellungen dieses Blocks legen fest, wie der Sensor Daten erfasst und wie sensibel er auf Bewegungen reagiert. Hier sind die spezifischen Einstellungen erklärt:

  • Bereich (2g): Diese Einstellung bestimmt den maximalen Beschleunigungsbereich, den der Sensor erfassen kann. Ein Bereich von 2g bedeutet, dass der Sensor Beschleunigungen bis zum Zweifachen der Erdbeschleunigung messen kann, was etwa 19,62 m/s² entspricht.

  • Bandbreite (7.81 Hz): Die Bandbreite bestimmt die Frequenz, mit der der Sensor Beschleunigungsdaten erfasst und aktualisiert. Eine Bandbreite von 7.81 Hz bedeutet, dass der Sensor etwa alle 128 Millisekunden (ms) Daten aktualisiert (entsprechend der Umkehrung der Frequenz: 1/7.81 Hz ≈ 128 ms). Diese Einstellung beeinflusst, wie schnell der Sensor auf Änderungen in der Beschleunigung reagiert und ist wichtig für Anwendungen, bei denen es auf die Reaktionsgeschwindigkeit ankommt.

  • Kompensation: Durch Aktivieren der Kompensation werden Messungenauigkeiten, die durch Umgebungseinflüsse oder Sensorimperfektionen verursacht werden, automatisch korrigiert, was zu präziseren und zuverlässigeren Daten führt.

image.png

Abrufen

Mit "hole Kombisensor [] Beschleunigung in []" erhält man die Beschleunigung in einer Raumrichtung. Die gewünschte Raumrichtung kann über das Dropdown-Menü (kleines Dreieck) gewählt werden. Die Beschleunigung wird in g angegeben. 

Abfragen

Um abzufragen, ob man eine bestimmte Beschleunigung misst, wird der Block "ist Kombisensor Beschleunigung in [] [] ..." genutzt. Über die Dropdown-Menüs (kleines Dreieck) kann ausgewählt, wie die Beschleunigung mit dem eingegebenen Wert verglichen werden soll (<, ≤, =, ≠, ≥, >) und welche Raumrichtung abgefragt werden soll. Der Vergleichswert wird in das Zahlenfeld am Ende des Blocks eingegeben. Dieser Block kann als Bedingung genutzt werden. Im Beispiel wird der Motor gestoppt, wenn die Beschleunigung in x-Richtung größer als 10 ist.

image-1623698042461.png

Kompasssensor

Initialisierung

Der Block "Init Magnetometer" initialisiert das Magnetometer mit einer spezifischen Datenaktualisierungsrate. Diese Rate bestimmt, wie oft das Gerät magnetische Felder misst und Daten aktualisiert, in diesem Beispiel 2 Hz, was einer Messung alle 0,5 Sekunden entspricht.

image.png

Abrufen

Mit "hole Kombisensor Magnetfluss in []" erhält man den magnetischen Fluss in einer Raumrichtung. Die gewünschte Raumrichtung kann über das Dropdown-Menü (kleines Dreieck) gewählt werden. Der magnetische Fluss wird in μT angegeben. 

Abfragen

Um abzufragen, ob man einen bestimmten magnetischen Fluss misst, wird der Block "ist Kombisensor Magnetfluss in [] [] ..." genutzt. Über die Dropdown-Menüs (kleines Dreieck) kann ausgewählt, wie der magnetische Fluss mit dem eingegebenen Wert verglichen werden soll (<, ≤, =, ≠, ≥, >) und welche Raumrichtung abgefragt werden soll. Der Vergleichswert wird in das Zahlenfeld am Ende des Blocks eingegeben. Dieser Block kann als Bedingung genutzt werden. Im Beispiel wird der Motor gestoppt, wenn der magnetische Fluss in x-Richtung größer als 10 ist.

image-1623688475892.30.53.png

Gyroskop

Initialisierung

Der Block "Init Gyroskop [] Bereich: [] (°/s) Bandbreite: [] (Hz) Kompensation: []" dient zur Initialisierung des Gyroskops mit spezifischen Einstellungen, die festlegen, wie es Drehbewegungen erfasst und darauf reagiert. Hier sind die spezifischen Einstellungen erklärt:

  1. Bereich:

    • Diese Einstellung definiert den maximalen Messbereich des Gyroskops. Ein Bereich von 125 Grad pro Sekunde bedeutet, dass das Gyroskop Drehbewegungen bis zu dieser Geschwindigkeit präzise erfassen kann.
  2. Bandbreite:

    • Die Bandbreite bestimmt die Frequenz, mit der das Gyroskop seine Messungen aktualisiert. Eine Bandbreite von 12 Hz bedeutet, dass das Gyroskop Daten etwa alle 83 Millisekunden aktualisiert (entsprechend der Umkehrung der Frequenz: 1/12 Hz ≈ 83 ms). Diese Einstellung beeinflusst die Reaktionsfähigkeit des Gyroskops auf Änderungen in der Drehbewegung.
  3. Kompensation:

    • Das Kontrollkästchen für die Kompensation ermöglicht es, Fehler und Abweichungen in den Messungen des Gyroskops automatisch zu korrigieren. Durch das Aktivieren der Kompensation werden Messungenauigkeiten, die durch Umgebungseinflüsse oder Geräteimperfektionen verursacht werden, ausgeglichen, was zu präziseren und zuverlässigeren Daten führt.

image.png

Abrufen

Mit "hole Kombisensor [] Rotation in []" erhält man die Rotation in einer Raumrichtung. Die gewünschte Raumrichtung kann über das Dropdown-Menü (kleines Dreieck) gewählt werden. Die Rotation wird in °/s angegeben. 

Abfragen

Um abzufragen, ob man eine bestimmte Winkelgeschwindigkeit misst, wird der Block "ist Kombisensor [] Rotation in [] [] ..." genutzt. Über die Dropdown-Menüs (kleines Dreieck) kann ausgewählt, wie die Rotation mit dem eingegebenen Wert verglichen werden soll (<, ≤, =, ≠, ≥, >) und welche Raumrichtung abgefragt werden soll. Der Vergleichswert wird in das Zahlenfeld am Ende des Blocks eingegeben. Dieser Block kann als Bedingung genutzt werden. Im Beispiel wird der Motor gestoppt, wenn die Rotation in x-Richtung größer als 10 ist.

image-1623698247608.16.22.png