====== Wiederverwendung von Python Code in meherern Programmen ====== Wie können wir die in der Basislektion ermittelten Daten (Raddurchmesser, Spur) und die Imports wieder verwenden? → Wir lagern sie in die Datei ''ev3geometrie.py'' aus, die wir dann als Import in anderen Programmen verwenden können: ===== Neues Bibliothks-Modul: ev3Geometrie.py ===== #!/usr/bin/env pybricks-micropython # imports nach https://fginfo.ksbg.ch/dokuwiki/doku.php?id=lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:programm-struktur 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 from math import pi # Wert pi importieren # Create your objects here. ev3 = EV3Brick() ev3.speaker.beep() links = Motor(Port.A) rechts = Motor(Port.B) # ---------------- dRad = 5.40 # [cm] Raddurchmesser gemessen spur = 10.5 # [cm] Radabstand gemessen # -------------- uRad = dRad * pi # [cm] Radmufang grad_pro_cm = 360 / uRad # [°/cm] cm_pro_grad = uRad / 360 # [cm/°] print("dRad={}cm, uRad={}cm, spur={}cm, Wegwinkel={}°/cm, Winkelweg={}cm/°".format(dRad, int(uRad), spur, int(grad_pro_cm), int(cm_pro_grad))) ===== Programme, die das Bibliothks-Modul: ev3Geometrie.py verwenden ===== #!/usr/bin/env pybricks-micropython import ev3Geometrie as g distanz = 100 # 100cm soll der Roboter fahren # 120 Grad/s Drehgeschwindigkeit, Drehwinkel, nicht warten, sondern gleich den nächsten Befehl. g.links.run_angle(520, distanz * g.grad_pro_cm, wait=False) g.rechts.run_angle(520, distanz * g.grad_pro_cm, wait=True) # Dito, aber warten, bis fertig gedreht. Um nicht immer ev3Geometrie schreiben zu müssen, importiert man es mit '' as g''. Dadurch kann man mit ''g.'' auf die Elemente des Basismoduls zugreifen. #!/usr/bin/env pybricks-micropython import ev3Geometrie as g from math import pi # Wert pi importieren # Kreis mit Durchmesser d und geschwindigkeit v fahren v = 400 d = 80 di = d - (2 * g.spur) u = d * pi ui = di * pi vi = v * ui / u print("va={}, vi={}, da={}, di={}, ua={}, ui={}".format(v, int(vi), d, int(di), int(u), int(ui))) g.links.run_angle(v, u * g.grad_pro_cm, wait=False) g.rechts.run_angle(vi, ui * g.grad_pro_cm, wait=True)