1. Aufgabe

Der Roboter fährt auf einem hellem Untergrund, auf dem sich schwarze Streifen befinden. er soll nach einer bestimmten Anzahl an Streifen anhalten.

  Quelltext

Quelltext

#!/usr/bin/env pybricks-micropython
 
from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
                                 InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import (Port, Stop, Direction, Button, Color,
                                 SoundFile, ImageFile, Align)
from pybricks.tools import print, wait, StopWatch
from pybricks.robotics import DriveBase
from time import sleep
 
 
brick.display.clear()
helligkeitsSensor= ColorSensor(Port.S3)
uhr = StopWatch()
 
 
# Initialize two motors and a drive base
left = Motor(Port.B)
right = Motor(Port.C)
wheel_diameter = 56
axle_track = 114
robot = DriveBase(left, right, wheel_diameter, axle_track)
 
brick.display.text('programm startet gleich',(10, 10))
sleep(2)
robot.drive(100,0)
n=0
i=0
hell_alt=1
brick.display.clear()
 
while True:
    helligkeit = helligkeitsSensor.reflection ()
    brick.display.clear()
 
    if helligkeit > 50:
        hell=1
 
    if helligkeit < 20:
        hell = 0
 
    if hell == 1 and hell_alt== 0: # Wechsel von dunkel nach hell
        brick.light(None)
        n=n+1
    elif hell ==0 and hell_alt== 1: # Wechsel von hell nach dunkel
        brick.light(Color.RED)
        n=n+1
    else: 
        i=i+1 # kein Wechsel
    hell_alt = hell 
    if n>3: # stop nach den 2. schwarzem Streifen
        robot.stop(Stop.BRAKE) # roboter soll anhalten
        break # while Schleife soll abgebrochen werden
brick.display.clear()
brick.display.text(n,(10, 10)) # zeigt, wie oft ein Wechsel gezählt wurde
brick.display.text(i,(10, 20)) # zeigt, wie oft kein Wechsel gezählt wurde
brick.display.text(i+n,(10, 40)) # zeigt die Anzahl der Durchläufe an
sleep(10)  # zeigt die Werte noch 10 Sekunden an