70 lines
No EOL
3 KiB
ReStructuredText
70 lines
No EOL
3 KiB
ReStructuredText
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 |