Drückst du den Touch-Sensor das erste Mal, so soll der Motor starten. Drückst du den Touch-Sensor ein zweites Mal, soll der Motor wieder stoppen. Beim dritten Mal wieder starten, beim vierten Mal wieder stoppen, usw.
Tipp: Du brauchst zwei Hilfsvariablen. Die eine Hilfsvariable sorgt dafür, dass ein Knopfdruck nur einmal erkannt wird (bereits bekannt). Die andere Hilfsvariable gibt Auskunft darüber, ob den Motor gerade läuft oder nicht (und dann entsprechend bei Knopfdruck gestoppt oder gestartet werden muss).
mögliche LÖSUNG
#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Button, Color
from pybricks.tools import wait, StopWatch, DataLog
from pybricks.robotics import DriveBase
from pybricks.media.ev3dev import SoundFile, ImageFile
touch_sensor = TouchSensor(Port.S1)
motor = Motor(Port.A)
buttonAlreadyDown = False # Knopf schon vorher unten?
motorRun = False # Läuft der Motor bereits?
while True:
if touch_sensor.pressed():
if not buttonAlreadyDown: # Knopf wird neu gedrückt
buttonAlreadyDown = True # …also ist der Knopf jetzt unten.
motorRun = not motorRun # Wahrheitswert wird invertiert…
if motorRun: # …und der Motor gestartet…
motor.run(100)
else: # …oder angehalten.
motor.stop()
else:
buttonAlreadyDown = False # Knopf wird wieder losgelassen
wait(100) # 1/10 Sekunde warten
Weitere Informationen zu Motoren findest du unter Docs>Motors.