Drivlina#

Introduktion#

123-roboten har en tvåhjulsdrivlina som låter den köra och svänga. Drivlinsmetoderna styr hur roboten rör sig.

Drivlinan kan mäta avstånd på två sätt: steg och mm (millimeter). Ett steg är en kvadrat på ett 123-fält.

Det finns många sätt att koda drivlinan. Nedan följer en lista över alla drivlinmetoder:

Åtgärder — Flytta och vrid roboten.

  • drive — Rör roboten framåt eller bakåt i all oändlighet.

  • drive_for — Rör roboten framåt eller bakåt ett visst avstånd.

  • drive_until — Rör roboten framåt eller bakåt tills den detekterar ett föremål, en krock eller en linje.

  • turn — Svänger roboten åt vänster eller höger för alltid.

  • turn_for — Svänger roboten åt vänster eller höger ett visst antal grader.

  • turn_to_heading — Vrider roboten mot en specifik kurs från -359 till 359 grader.

  • stop — Stoppar robotens rörelse.

Mutatorer — Justera drivlinans inställningar.

  • set_timeout — Ställer in hur länge roboten ska försöka slutföra en rörelse.

  • set_heading — Ändrar robotens nuvarande kurs till en ny kurs.

Getters — Kontrollera rörelsestatus.

  • is_stopped — Returnerar om roboten har slutat röra sig, som ett booleskt värde.

  • get_heading — Returnerar robotens aktuella kurs från 0 till 359 grader.

Åtgärder#

drive#

drive rör roboten framåt eller bakåt för alltid. Roboten fortsätter att röra sig tills den får en annan åtgärd, som att vända eller stanna.

Usage:
robot.drive(direction)

Parametrar

Beskrivning

direction

Robotens rörelseriktning: FORWARD eller REVERSE.

# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()

drive_for#

drive_for flyttar roboten framåt eller bakåt ett visst avstånd. Projektet väntar tills roboten är klar innan nästa kodrad körs.

Usage:
robot.drive_for(direction, distance, unit)

Parametrar

Beskrivning

direction

Robotens rörelseriktning: FORWARD eller REVERSE.

distance

Den sträcka roboten kör. Detta kan vara ett heltal eller ett decimaltal.

unit

Avståndsenheten: MM (millimeter) eller STEPS (en ruta på ett 123-fält).

# Drive back and forth.
robot.drive_for(FORWARD, 3, STEPS)
robot.drive_for(REVERSE, 3, STEPS)

drive_until#

drive_until flyttar roboten framåt eller bakåt tills den detekterar ett föremål, en krock eller en linje.

Usage:
robot.drive_until(direction)

Parametrar

Beskrivning

direction

Robotens rörelseriktning: FORWARD eller REVERSE.

# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)

turn#

turn vrider roboten åt vänster eller höger för alltid. Roboten fortsätter att vrida tills den får en annan åtgärd, som att köra eller stanna.

Usage:
robot.turn(direction)

Parametrar

Beskrivning

direction

Riktningen roboten svänger: LEFT eller RIGHT.

# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()

turn_for#

turn_for vrider roboten åt vänster eller höger ett visst antal grader. Projektet väntar tills roboten är klar med att vrida sig innan nästa kodrad körs.

Usage:
robot.turn_for(direction, degrees)

Parametrar

Beskrivning

direction

Riktningen roboten svänger: LEFT eller RIGHT.

degrees

Antalet grader att vrida. Detta kan vara ett heltal eller ett decimaltal.

# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)

turn_to_heading#

turn_to_heading vrider roboten mot en specifik kurs från -359 till 359 grader. Roboten kommer att svänga den kortaste riktningen för att nå målkursen.

Startriktningen är 0 grader.

Projektet väntar tills roboten är klar med att snurra innan nästa kodrad körs.

Usage:
robot.turn_to_heading(heading)

Parametrar

Beskrivning

heading

Robotens riktning ska vara mellan -359 och 359 grader.

# Turn to face the cardinal directions.
robot.turn_to_heading(90)
wait(2, SECONDS)
robot.turn_to_heading(180)
wait(2, SECONDS)
robot.turn_to_heading(270)
wait(2, SECONDS)
robot.turn_to_heading(0)
wait(2, SECONDS)

stop#

stop stoppar robotens rörelse.

Usage:
robot.stop()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# Stop driving after 4 seconds.
robot.drive(FORWARD)
wait(4, SECONDS)
robot.stop()

Mutatorer#

set_timeout#

set_timeout anger hur många sekunder roboten ska försöka slutföra en rörelse. Om roboten inte kan slutföra inom den tiden kommer den att sluta försöka och gå vidare till nästa kodrad. Detta förhindrar att roboten fastnar i en rörelse.

Usage:
robot.set_timeout(time, unit)

Parametrar

Beskrivning

time

Den tid som tillåts för en rörelse. Detta kan vara ett heltal eller ett decimaltal.

unit

Tidsenheten: MSEC eller SECONDS.

# Turn right after driving for 1 second.
robot.set_timeout(1, SECONDS)
robot.drive_for(FORWARD, 1000, MM)
robot.turn_for(RIGHT, 90)

set_heading#

set_heading ändrar robotens nuvarande kurs till ett nytt kursvärde.

Om roboten till exempel har vänt sig åt höger och kursen ställs in på 0 grader, blir den högervända positionen den nya 0 grader.

Usage:
robot.set_heading(heading)

Parametrar

Beskrivning

heading

Kursvärdet, i grader, som ska ställas in för roboten.

# Face the new 0 degree heading.
robot.set_heading(90)
robot.turn_to_heading(0)

Getters#

is_stopped#

is_stopped returnerar ett Boolean som rapporterar om roboten har slutat röra sig.

  • True — Roboten har stoppats.

  • False — Roboten rör sig fortfarande.

Usage:
robot.is_stopped()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# Glow blue after a crash.
robot.drive_until(FORWARD)
while True:
    if robot.is_stopped():
        robot.led.glow(BLUE)
    else:
        robot.led.glow(GREEN)
    wait(0.05, SECONDS)

get_heading#

get_heading returnerar den riktning roboten för närvarande är vänd mot som ett heltal från 0 till 359 grader.

Robotens startriktning är 0 grader.

Usage:
robot.get_heading()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# Display the heading after turning.
robot.turn_for(RIGHT, 450)
console.print(robot.get_heading())