lehrkraefte:blc:informatik:glf20:robotik:motorenkontrolle

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf20:robotik:motorenkontrolle [2021/04/30 10:14]
Ivo Blöchliger [Intervall umrechnen, ein für alle mal]
lehrkraefte:blc:informatik:glf20:robotik:motorenkontrolle [2021/05/03 09:15] (current)
Ivo Blöchliger [Steuerung der Motoren]
Line 25: Line 25:
 robot.exit()                  # Programm korrekt beenden robot.exit()                  # Programm korrekt beenden
 </code> </code>
 +{{:lehrkraefte:blc:informatik:glf20:robotik:pasted:20210503-091521.png?320}}
 </WRAP> </WRAP>
  
Line 176: Line 177:
   * Intervall verschieben: Bestimmen eine Verschiebung (Funktion $f_4(x)$) so, dass $f_4(0)=c$.   * Intervall verschieben: Bestimmen eine Verschiebung (Funktion $f_4(x)$) so, dass $f_4(0)=c$.
   * Die gesuchte Funktion ist $f(x) = f_4(f_3(f_2(f_1(x))))$.   * Die gesuchte Funktion ist $f(x) = f_4(f_3(f_2(f_1(x))))$.
 +
 +{{lehrkraefte:blc:informatik:glf20:robotik:2021-04-30-note-11-44.pdf|Notizen 2pG als pdf}}
 +
 +{{lehrkraefte:blc:informatik:glf20:robotik:2021-05-03-note-09-00.pdf|Notizen 2aLM als pdf}}
  
 Programmieren Sie diese Funktion nun in Python: Programmieren Sie diese Funktion nun in Python:
Line 190: Line 195:
     gear.setSpeed(int(linear(0,zehncm, 5, myspeed, gear.getLeftMotorCount())))     gear.setSpeed(int(linear(0,zehncm, 5, myspeed, gear.getLeftMotorCount())))
 </code> </code>
 +
 +<hidden Lösungsvorschlag>
 +<code python>
 +def linear(a,b,c,d,x):
 +    return (x-a)/(b-a)*(d-c)+c  
 +
 +
 +einMeter = 100/0.048  # Die korrekte Anzahl Grad für 1 m  ausrechnen und eintragen!
 +anfahren = 0.4*einMeter  # Strecke bis wohin beschleunigt wird
 +bremsen = 0.6*einMeter   # Strecke ab der gebremst wird
 +gear.resetLeftMotorCount()   # Strecke auf 0 Grad setzen
 +mySpeed = 60   # Egal welche Geschwindigkeit
 +
 +while gear.getLeftMotorCount()<einMeter:
 +    if gear.getLeftMotorCount()<anfahren:
 +        v = linear(0,anfahren, 5, mySpeed, gear.getLeftMotorCount()) # Formel mit gear.getLeftMotorCount()
 +        print(int(v))
 +        gear.setSpeed(int(v))
 +        gear.forward()
 +
 +</code>
 +</hidden>
   * Bauen Sie die Funktion ''linear(a,b,c,d,x)'' in Ihr Programm ein, so dass der Roboter auf den ersten 40 cm sauber anfährt und auf den letzten 40 cm wieder bremst.   * Bauen Sie die Funktion ''linear(a,b,c,d,x)'' in Ihr Programm ein, so dass der Roboter auf den ersten 40 cm sauber anfährt und auf den letzten 40 cm wieder bremst.
   * Programieren Sie eine Funktion ''fahrgut(distanz)'', die den Roboter die ''distanz'' geradeaus fahren lässt, wobei auf den ersten 10 cm sauber anfahren und auf den lezten 10 cm wieder sauber bremst.   * Programieren Sie eine Funktion ''fahrgut(distanz)'', die den Roboter die ''distanz'' geradeaus fahren lässt, wobei auf den ersten 10 cm sauber anfahren und auf den lezten 10 cm wieder sauber bremst.
  • lehrkraefte/blc/informatik/glf20/robotik/motorenkontrolle.1619770454.txt.gz
  • Last modified: 2021/04/30 10:14
  • by Ivo Blöchliger