Mein drittes Programm
#####################

Der offizielle compAIR-Bot ist mit einer Reihe von Sensoren ausgestattet. Die wichtigsten sind die Infrarotsensoren und -sender, die an der Vorderseite des Roboters angebracht sind. Insgesamt gibt es fünf IR-Sensoren.

Um loszulegen, muss man zunächst das entsprechende Modul wie folgt importieren:

.. code-block:: python
    :linenos:

    from compLib.IRSensor import IRSensor

|irSensor|


Wie im obigen Diagramm zu sehen ist, verfügt jeder Sensor auch über einen entsprechenden IR-Sender / Emitter. Dieser Sender kann mit ``IRSensor.set(port, enable)`` aktiviert werden.

Schalten wir nun alle fünf Sender ein:

.. code-block:: python
    :linenos:

    from compLib.IRSensor import IRSensor

    IRSensor.enable()

Diese fünf verschiedenen Sensoren befinden sich an der Vorderseite des Roboters und sind wichtig, um schwarze Linien zu erkennen.

Es ist sehr einfach, den Wert der Sensoren abzulesen:

.. code-block:: python
    :linenos:

    from compLib.IRSensor import IRSensor

    IRSensor.enable()

    if IRSensor.read_all()[0] > 500:
        print("high")
    else:
        print("low")

**Erkennen einer schwarzen Linie**
Um den IR-Sensor zu testen, kannst du deinen Roboter auf eine schwarze Linie stellen. Der Sensor in der Mitte sollte auf der schwarzen Linie liegen.

.. code-block:: python
    :linenos:

    from compLib.IRSensor import IRSensor

    IRSensor.enable()
    COLOR_BREAK = 900

    if IRSensor.read_all()[2] > COLOR_BREAK:
        print("Robot is standing on a black line")
    else:
    print("Robot is NOT standing on a black line")

Wenn das Programm ausgeführt wird, zeigt es an, dass der Roboter auf einer schwarzen Linie steht, wenn sich der mittlere IR-Sensor des Roboters über einer schwarzen Linie befindet, und es zeigt an, dass der Roboter NICHT auf einer schwarzen Linie steht, wenn sich der mittlere IR-Sensor nicht über einer Linie befindet.

| In ``Zeile 1`` importieren wir das ``IRSensor``-Modul, das zur Kommunikation mit dem IR-Sensor-Board verwendet werden kann.
| In ``Zeile 3`` wird der Sensor mit der Nummer ``3`` aktiviert. Wenn wir einen Sensor nicht aktivieren, können wir ihn nicht in unserem Programm verwenden.
| In ``Zeile 4`` stellen wir einen Farbschwellenwert von ``900`` ein, mit dem wir später prüfen werden, ob der Sensorwert unter oder über diesem Schwellenwert liegt. Unterhalb bedeutet, dass sich eine helle Farbe unter dem IR-Sensor befindet und ein höherer Wert als ``900`` bedeutet, dass sich eine dunkle Farbe unter dem IR-Sensor befindet.

| In ``Zeile 6`` lesen wir den Sensor Nummer ``2`` aus und prüfen, ob der Wert über dem von uns definierten Schwellenwert von ``900`` liegt. Wenn das der Fall ist, hat der IR-Sensor eine schwarze Linie erkannt.

Wir werden nun das Programm so ändern, dass es alle ``0.1`` Sekunden prüft, ob sich eine schwarze Linie unter dem Roboter befindet, und wenn dies der Fall ist, eine Meldung ausgibt.


.. |irSensor| image:: images/07_irSensor.webp