Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== 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 ===== <WRAP center round todo> <code python 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))) </code> </WRAP> ===== Programme, die das Bibliothks-Modul: ev3Geometrie.py verwenden ===== <WRAP center round todo> <code python gerade-100cm.py> #!/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. </code> 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. </WRAP> <WRAP center round todo> <code python kreis-80cm.py> #!/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) </code> </WRAP> lehrkraefte/sbt/informatik/glf22/robotik-mit-svcode/reusecode.txt Last modified: 2023/05/12 21:30by Karlheinz Schubert