MINDSTORMS EV3-basissæt

Lav et fartpilotsystem

Design et fartpilotsystem, der kan ændre et køretøjs hastighed ved et tryk på en knap.

120+ min.
Let øvet
8. klasse - Gymnasie
set-cruise-controle

Lektionsplan

Forbered dig

  • Læs denne undervisningsvejledning igennem.
  • Hvis du føler, der er behov for det, kan du planlægge en lektion ved hjælp af Kom godt i gang-materialet i EV3 Lab-softwaren eller Programmerings-appen. Det vil hjælpe eleverne med at blive fortrolige med LEGO® MINDSTORMS® Education EV3.

Inddrag eleverne (30 min.)

  • Brug idéerne i afsnittet Start en samtale nedenfor til at inddrage eleverne i en samtale om emnerne i dette projekt.
  • Forklar projektet.
  • Opdel klassen i hold a to elever.
  • Giv eleverne tid til at brainstorme.

Undersøg (30 min.)

  • Få eleverne til at lave flere forskellige prototyper.
  • Lad dem udforske både byggeri og programmering.
  • Få hvert elevpar til at bygge og teste to løsninger.

Forklar (60 min.)

  • Bed eleverne om at teste deres løsninger og vælge den bedste.
  • Sørg for, at de kan lave deres egne testskemaer.
  • Giv holdene tid nok til at færdiggøre deres projekter og indsamle materiale til at dokumentere deres arbejde.

Udbyg (60 min.)

  • Giv eleverne tid til at udarbejde deres endelige rapporter.
  • Lad eleverne fremlægge deres resultater, så de kan dele deres erfaringer.

Evaluer

  • Giv feedback om hver elevs præstation.
  • For at forenkle processen kan du bruge det medfølgende evalueringsskema.

Start en samtale

Personbilers fartpilot er et system, der automatisk styrer køretøjets hastighed. Selvom det virker som moderne teknologi, blev det første gang introduceret i 1958. Så hvordan virker det?

set-cruise-controle

Få eleverne til at deltage aktivt i en brainstorming.

Bed eleverne om at overveje disse spørgsmål:

  • Hvad er formålet med en fartpilot i en bil?
  • Hvordan hjælper fartpiloten bilister under lange køreture?
  • Hvordan kan fartpiloten blive endnu bedre?
  • Hvordan kan et fartkontrolsystem med touch-knap bruges af bilister?
  • Hvilke elementer skal du medtage i dit program for at omdanne tryk på knapper til ændringer i motorhastigheden?

Giv eleverne tid til at besvare disse spørgsmål:

Få eleverne til at dokumentere deres indledende idéer og forklare, hvorfor de valgte netop den løsning, de vil bruge til deres første prototype. Bed dem om at beskrive, hvordan de vil evaluere deres idéer i løbet af projektet. På den måde har de specifikke oplysninger til rådighed, som de kan bruge til at evaluere deres løsning og afgøre, hvorvidt den er effektiv.

Byggetips

Start med at bygge et køretøj. Eleverne kan bruge et hvilket som helst af de foreslåede LEGO MINDSTORMS EV3-chassiser eller designe deres eget. Sørg for, at de medtager knapper, der skal simulere knapperne på rattet i en bil med fartpilot.

ev3-robot-color-sensor

Brug af to tryksensorer

Forklar, at eleverne i denne lektion skal bruge to tryksensorer til at styre og opretholde deres chassis' hastighed.

Programmeringstips

Eleverne vil sandsynligvis bruge en Variabel-blok til dette projekt. En Variabel-blok er en programmeringsblok, som kan lagre data (dvs. tekst, logik, tal eller arrays), der kan overskrives når som helst, mens programmet kører.

En variabel kan altså bruges til at lagre værdier, der kan opdateres, i et program. Den værdi, der er lagret i en variabel, kan overskrives igen og igen, så længe programmet kører.

Øg hastigheden med variabelprogram

coding-07-01

Forklaring af programmet

  1. Start programmet.

  2. Lav en Variabel-blok, der kaldes "Hastighed", og angiv en værdi på 0.

  3. Hvis der trykkes på tryksensoren:

    a. Aflæs variablen "Hastighed".
    b. Læg "10" til den aflæste værdi.
    c. Skriv resultatet i variablen "Hastighed".
    d. Aflæs variablen "Hastighed".
    e. Start motor B og C ved en hastighed, der er indstillet til den værdi, som er lagret i variablen "Hastighed", ELLERS (gør intet).

  4. Gentag trin 3a til 3e for evigt.

Øg og sænk hastigheden med variabel

coding-07-02

Forklaring af programmet

  1. Start programmet.
  2. Lav en Variabel-blok, der kaldes "Hastighed", angiv en værdi på 0, og start to opgaver.

Opgave 1
3. Hvis der trykkes på Tryksensor 1:

a. Aflæs variablen "Hastighed".
b. Læg "10" til den aflæste værdi.
c. Skriv resultatet i variablen "Hastighed".
d. Aflæs variablen "Hastighed".
e. Start motor B og C ved en hastighed, der er indstillet til den værdi, som er lagret i variablen "Hastighed", ELLERS (gør intet).

  1. Gentag trin 3a til 3e for evigt. Opgave 2

  2. Hvis der trykkes på Tryksensor 2:

    a. Aflæs variablen "Hastighed".
    b. Træk "10" fra den aflæste værdi.
    c. Skriv resultatet i variablen "Hastighed".
    d. Aflæs variablen "Hastighed".
    e. Start motor B og C ved en hastighed, der er indstillet til den værdi, som er gemt i variablen "Hastighed", ELLERS (gør intet).

  3. Gentag trin 5a til 5e for evigt.

Øg og sænk hastigheden med variabel og display
Lad eleverne bruge Display-blokken til at få vist chassisets hastighed.

coding-07-03

Forklaring af programmet

  1. Start programmet.
  2. Lav en Variabel-blok, der kaldes "Hastighed", angiv en værdi på 0, og start tre opgaver.

Opgave 1
3. Start Min blok "Acceleration".

Opgave 2
4. Start Min blok "Deceleration".

Opgave 3
5. Aflæs variablen "Hastighed".
6. Vis den værdi, der er lagret i variablen "Hastighed".
7. Gentag trin 5 og 6 for evigt.

DOWNLOAD PROGRAMEKSEMPLER15 kB, kræver EV3 Lab-software

EV3 MicroPython programløsninger

Øg hastigheden med variabel

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, TouchSensor
from pybricks.parameters import Port, Stop, Button
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Set up the Touch Sensor on Port 1.  It is used to increase the speed
# of the robot.
increase_touch_sensor = TouchSensor(Port.S1)

# Initialize the "old_speed" variable to "None."  It is used to check
# whether the speed variable has changed.  Setting it to "None" ensures
# this check will be "True" when the speed variable is initialized with
# a value.
old_speed = None

# Initialize the speed variable to 0.
speed = 0

# This is the main part of the program.  It is a loop that repeats
# endlessly.
while True:

    # Check whether the Touch Sensor is pressed, and increase the speed
    # variable by 10 mm per second if it is.
    if increase_touch_sensor.pressed():
        speed += 10

    # If the speed variable has changed, update the speed of the robot.
    if speed != old_speed:
        old_speed = speed
        robot.drive(speed, 0)

    # Wait 200 milliseconds before starting the loop again.
    wait(200)

Øg og sænk hastigheden med variabel

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, TouchSensor
from pybricks.parameters import Port, Stop, Button
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Set up the Touch Sensor on Port 1.  It is used to increase the speed
# of the robot.
increase_touch_sensor = TouchSensor(Port.S1)

# Set up the Touch Sensor on Port 2.  It is used to decrease the speed
# of the robot.
decrease_touch_sensor = TouchSensor(Port.S2)

# Initialize the "old_speed" variable to "None."  It is used to check
# whether the speed variable has changed.  Setting it to "None" ensures
# this check will be "True" when the speed variable is initialized with
# a value.
old_speed = None

# Initialize the speed variable to 0.
speed = 0

# This is the main part of the program.  It is a loop that repeats
# endlessly.
#
# First, increase the speed variable if Touch Sensor 1 is pressed.
# Second, decrease the speed variable if Touch Sensor 2 is pressed.
# Finally, the robot updates its speed if the speed variable was
# changed.
#
# Then the loop starts over after a brief pause.
while True:

    # Check whether Touch Sensor 1 is pressed, and increase the speed
    # variable by 10 mm per second if it is.
    if increase_touch_sensor.pressed():
        speed += 10

    # Check whether Touch Sensor 2 is pressed, and decrease the speed
    # variable by 10 mm per second if it is.
    if decrease_touch_sensor.pressed():
        speed -= 10

    # If the speed variable has changed, update the speed of the robot.
    if speed != old_speed:
        old_speed = speed
        robot.drive(speed, 0)

    # Wait 200 milliseconds before starting the loop again.
    wait(200)

Øg og sænk hastigheden med variabel og display

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, TouchSensor
from pybricks.parameters import Port, Stop, Button
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Set up the Touch Sensor on Port 1.  It is used to increase the speed
# of the robot.
increase_touch_sensor = TouchSensor(Port.S1)

# Set up the Touch Sensor on Port 2.  It is used to decrease the speed
# of the robot.
decrease_touch_sensor = TouchSensor(Port.S2)

# Initialize the "old_speed" variable to "None."  It is used to check
# whether the speed variable has changed.  Setting it to "None" ensures
# this check will be "True" when the speed variable is initialized with
# a value.
old_speed = None

# Initialize the speed variable to 0.
speed = 0

# This is the main part of the program.  It is a loop that repeats
# endlessly.
#
# First, increase the speed variable if Touch Sensor 1 is pressed.
# Second, decrease the speed variable if Touch Sensor 2 is pressed.
# Finally, the robot updates its speed if the speed variable was
# changed, and displays it on the screen.
#
# Then the loop starts over after a brief pause.
while True:

    # Check whether Touch Sensor 1 is pressed, and increase the speed
    # variable by 10 mm per second if it is.
    if increase_touch_sensor.pressed():
        speed += 10

    # Check whether Touch Sensor 2 is pressed, and decrease the speed
    # variable by 10 mm per second if it is.
    if decrease_touch_sensor.pressed():
        speed -= 10

    # If the speed variable has changed, update the speed of the robot
    # and display the new speed in the center of the screen.
    if speed != old_speed:
        old_speed = speed
        robot.drive(speed, 0)
        brick.display.clear()
        brick.display.text(speed, (85, 70))

    # Wait 200 milliseconds before starting the loop again.
    wait(200)

Idéer til videre arbejde

Idéer til videre arbejde – faglig kommunikation

Mulighed 1
For at styrke elevernes færdigheder i faglig kommunikation kan de:

  • Bruge deres skriftlige arbejde, tegninger og/eller fotos til at opsummere deres designproces og lave en endelig rapport.
  • Lave en video, hvor de demonstrerer deres designproces, fra deres indledende idéer til det færdige projekt.
  • Lave en præsentation om deres program.
  • Lave en præsentation, som forbinder deres projekt med virkelige anvendelser af lignende systemer og beskriver nye opfindelser, man kan lave på baggrund af deres produkt.

Mulighed 2
I denne lektion lavede eleverne en fartpilotgrænseflade. Forskellige enkeltpersoner og myndigheder indsamler data om køretøjers hastighed for at indberette trafikale forhold og mindske risikoen for trafikulykker.
For at styrke elevernes færdigheder i faglig kommunikation kan de:

  • Skrive et argument til støtte for påstanden om, at privatpersoner eller myndigheder, der indsamler hastighedsdata om motorkøretøjer med henblik på at overvåge trafiksikkerheden, effektivt kan reducere hyppigheden af ulykker, der involverer motorkøretøjer.
  • Udfordres til at tage fat på modargumentet om, at denne praksis er en væsentlig krænkelse af privatlivets fred og folks personoplysninger, og til at bruge specifik dokumentation til at afveje styrkerne og svaghederne ved de to argumenter.

Idéer til videre arbejde – matematik

I denne lektion lavede eleverne en fartpilotgrænseflade. Menneskelige førere er dygtige til at vurdere og køre efter vejforholdene. Førerløse systemer skal dog trænes i at gøre det samme.
For at styrke deres færdigheder i matematik og udforske den kunstige intelligens bag førerløse køretøjer kan eleverne:

  • Overveje, hvilke forskellige variabler de bør undersøge for at bestemme forholdet mellem vejforholdene og disses indvirkning på et køretøjs manøvreevne og præstation.
  • Vælge tre eller fire af disse variabler at medtage i en matematisk model for vejforhold og udarbejde en datatabel for at organisere forholdet mellem disse variabler og køretøjets ideelle hastighed.
  • Med tanke på, at førerløse køretøjer bruger maskinlæringsprocessen til at identificere og opdatere forholdet mellem vejforholdsvariablerne og køretøjets hastighed: identificere vejforholdsvariabler for tørre, våde og snedækkede veje og derefter forudsige forholdet mellem variablerne og sikre hastigheder (f.eks. kan en variabel for tør vej være vejens ruhed).

Evalueringsmuligheder

Underviserens observationstjekliste
Lav en skala, der passer til dine behov, f.eks.:

  1. Delvist gennemført
  2. Gennemført
  3. Gennemført over forventning

Brug de følgende succeskriterier til at evaluere elevernes fremskridt:

  • Eleverne kan identificere de vigtige elementer i et problem.
  • Eleverne kan selvstændigt udvikle en fungerende og kreativ løsning.
  • Eleverne kan tydeligt kommunikere deres idéer.

Selvevaluering
Når eleverne har indsamlet data om deres løsningers ydeevne, skal de have tid til at reflektere over løsningerne. Hjælp dem ved at stille spørgsmål som:

  • Opfylder din løsning kriterierne i opgaveformuleringen?
  • Kan din robots bevægelse(r) gøres mere præcise?
  • Hvordan har andre løst dette problem?

Bed eleverne om at brainstorme og dokumentere to måder, de kunne forbedre deres løsninger på.

Fælles feedback
Lad eleverne deltage i en evalueringsproces, hvor hver gruppe skal evaluere både deres eget og de andres projekter. Denne evalueringsproces kan hjælpe eleverne med at udvikle deres kompetencer i at give konstruktiv feedback samt forbedre deres analysefærdigheder og evner til at bruge objektive data til understøttelse af deres argumenter.

Mulige karrierer

Hvis eleverne kunne lide denne lektion, ville de måske være interesserede i at undersøge karrieremuligheder inden for:

  • Erhverv og økonomi (iværksætteri)
  • Fremstilling og teknik (teknisk planlægning)

Hjælp til lærere

Eleverne skal:

  • Bruge designprocessen til at løse virkelige problemer

Fysik/kemi efter 9. klasse
• Eleven kan beskrive sammenhænge mellem teknologisk udvikling og samfundsudvikling
• Eleven har viden om centrale teknologiske gennembrud

Teknologiforståelse efter 9. klasse
• Eleven kan på baggrund af kritisk analyse og vurdering udvikle konkrete forslag til redesign af digitale artefakter og de situationer, artefaktet indgår i
• Eleven har viden om egne handlemuligheder ift. digitale artefakters betydning i samfundet
• Eleven kan læse og forstå programmer skrevet i et tekstbaseret programmeringssprog samt anvende et sådant til systematsk modifkaton og konstrukton af programmer ud fra en problemspecifkaton
• Eleven har viden om metoder til at analysere og forudsige programmers opførsel samt teknikker til systematsk og trinvis udvikling af programmer

Informatik C – hhx, htx, stx
• Eleven kan redegøre for udvalgte elementer i et interaktionsdesign, samt realisere udvalgte interaktionsdesign i et konkret it-system og tilpasse eksisterende design og systemer
• Identificere basale strukturer i programmeringssprog, modellere programmer og anvende programmering til udvikling af simple it-systemer

Elevmateriale

Elevark

Download to view and share the student worksheet.

Download, se eller del elevarket, enten som en HTML-side eller som en pdf, der kan udskrives.

LEGO, the LEGO logo, the Minifigure, DUPLO, the SPIKE logo, MINDSTORMS and the MINDSTORMS logo are trademarks and/or copyrights of the LEGO Group. ©2020 The LEGO Group. All rights reserved. Use of this site signifies your agreement to the terms of use.