MINDSTORMS EV3 grunnsett

Lage et fartskontrollsystem

Utform et fartskontrollsystem som endrer farten til et kjøretøy med ett knappetrykk.

120+ min.
Middels
9.-12. trinn
set-cruise-controle

Leksjonsplan

Forberede
- Les gjennom dette lærermaterialet.
- Du kan planlegge en leksjon ved bruk av Kom i gang-materialet i EV3 Lab-programvaren eller Programmering-appen, ved behov. Dette gjør at elevene blir kjent med LEGO® MINDSTORMS® Education EV3.

Engasjere (30 min.)
- Bruk ideene i Starte en diskusjon-delen nedenfor til å engasjere elevene i en diskusjon knyttet til dette prosjektet.
- Forklar prosjektet.
- Del klassen i grupper på to elever.
- La elevene få nok tid til å en idédugnad.

Utforske (30 min.)
- Be elevene om å opprette flere prototyper.
- Oppfordre dem til å utforske både bygging og programmering.
- Be hver gruppe om å bygge og teste to løsninger.

Forklare (60 min.)
- Be elevene om å teste løsningene sine og velge den beste.
- Sørg for at de kan lage sine egne testtabeller.
- La gruppene få litt tid til å avslutte prosjektet og til å samle inn informasjon for å dokumentere arbeidet.

Utdype (60 min.)
- Gi elevene litt tid til å lage sine endelige rapporter.
- Start en delingsøkt der hver gruppe presenterer sine resultater.

Evaluere
- Gi tilbakemelding på elevenes arbeid.
- Du kan bruke de vedlagte vurderingsrubrikkene for å forenkle prosessen.

Starte en diskusjon

Fartskontrollfunksjonen på en personbil er et system som automatisk kontrollerer kjøretøyets fart. Selv om vi tror dette er en moderne teknologi, så ble den først introdusert i 1958. Hvordan fungerer den?

set-cruise-controle

Oppfordre til en aktiv idédugnadsprosess.

Be elevene om å tenke gjennom disse spørsmålene:

  • Hva er hensikten med fartskontrollen i en bil?
  • Hvordan hjelper fartskontrollen en bilist på lange turer?
  • Hvordan kan fartskontrollen gjøres enda bedre?
  • Hvordan kan en bilist kontrollere fartskontrollsystemet ved bruk av et knappetrykk?
  • Hvilke elementer må dere inkludere i programmet for å omgjøre knappetrykk til endringer i motorhastighet?

Gi elevene litt tid til å besvare disse spørsmålene:

Oppfordre elevene til å dokumentere sine første ideer og forklare hvorfor de valgte løsningen de vil bruke for sin første prototype. Be dem beskrive hvordan de vil evaluere ideene sine gjennom hele prosjektet. På denne måten, når elevene ser gjennom og endrer, har de spesifikk informasjon som de kan bruke til å evaluere løsningen, og avgjøre om den var effektiv eller ikke.

Byggetips

Start ved å bygge kjøretøyet. Elevene kan bruke hvilken som helst av de foreslåtte LEGO® MINDSTORMS® EV3 Kjørebasemodellene eller utforme sine egne. Sørg for at de inneholder knapper som simulerer knappene som finnes på rattet i en bil med fartsholder.

ev3-robot-color-sensor

Bruke to trykksensorer

Forklar at i dagens leksjon så skal elevene bruke to trykksensorer til å kontrollere og opprettholde farten på kjørebasemodellen.

Programmeringstips

Elevene vil mest sannsynligvis bruke en Variabel-blokk i dette prosjektet. En Variabel-blokk er en programmeringsblokk som kan lagre data (dvs. tekst, logikk, et tall eller matriser) som kan overskrives når som helst mens programmet kjører.

Ved bruk av en variabel kan de lagre verdier i et program som kan oppdateres. Verdien som lagres i en variabel kan overskrives flere ganger, så lenge programmet kjøres.

Øke farten med et Variabel-program

coding-07-01

Forklaring av programmet

  1. Start programmet.

  2. Opprett en Variabel-blokk med navn «Fart» og angi en verdi på 0.

  3. Hvis trykksensoren er trykket på:

    a. Les variabelen med navn «Fart».
    b. Legg til «10» i leseverdien.
    c. Skriv resultatet i variabelen med navn «Fart».
    d. Les variabelen med navn «Fart».
    e. Start motorene B og C med farten som er angitt i variabelen med navn «Fart» ELLERS (ikke gjør noe).

  4. Gjenta trinnene 3a og 3e for alltid.

Øke og redusere farten med en Variabel

coding-07-02

Forklaring av programmet

  1. Start programmet.
  2. Opprett en Variabel-blokk med navn «Fart», angi en verdi på 0 og start to oppgaver.

Oppgave 1
3. Hvis trykksensor 1 trykkes på:

a. Les variabelen med navn «Fart».
b. Legg til «10» i leseverdien.
c. Skriv resultatet i variabelen med navn «Fart».
d. Les variabelen med navn «Fart».
e. Start motorene B og C med farten som er angitt i variabelen med navn «Fart» ELLERS (ikke gjør noe).

  1. Gjenta trinnene 3a og 3e for alltid.

Oppgave 2
5. Hvis trykksensor 2 trykkes på:

a. Les variabelen med navn «Fart».
b. Subtraher «10» fra leseverdien.
c. Skriv resultatet i variabelen med navn «Fart».
d. Les variabelen med navn «Fart».
e. Start motorene B og C med farten som er angitt i variabelen med navn «Fart» ELLERS (ikke gjør noe).

  1. Gjenta trinnene 5a og 5e for alltid.

Øke og redusere farten med en Variabel og Skjerm
Be elevene bruke Skjerm-blokken til å vise farten til kjørebasen.

coding-07-03

Forklaring av programmet

  1. Start programmet.
  2. Opprett en Variabel-blokk med navn «Fart», angi en verdi på 0 og start tre oppgaver.

Oppgave 1
3. Start Min-blokken «Akselerasjon».

Oppgave 2
4. Start Min-blokken «Retardasjon».

Oppgave 3
5. Les variabelen med navn «Fart».
6. Vis verdien som er lagret i variabelen med navn «Fart».
7. Gjenta trinnene 5 og 6 for alltid.

LAST NED PRØVEPROGRAMMER15 kB, krever EV3 Lab-programvaren

EV3 MicroPython Programløsninger

Øke farten med en 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)

Øke og redusere farten med en 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)

Øke og redusere farten med en Variabel og Skjerm

#!/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)

Flere ideer

Flere ideer til norskundervisningen

Alternativ 1
Legge til rette for utvikling av språklige ferdigheter, og be elevene om å:

  • Bruke skriftlig arbeid, skisser og/eller bilder til å oppsummere designprosessen, og lage en endelig rapport.
  • Lage en video som demonstrerer designprosessen helt fra de første ideene og til det fullførte prosjektet.
  • Lage en presentasjon om programmet sitt.
  • Lage en presentasjon som knytter prosjektet til realistiske brukstilfeller med lignende systemer, og beskriver nye oppfinnelser som kan gjøres basert på hva de har laget.

Alternativ 2
I denne leksjonen laget elevene et grensesnitt for hastighetskontroll. Privatpersoner og etater samler inn hastighetsdata fra kjøretøyer for å rapportere trafikkforhold og redusere sjansene for trafikkulykker.
Legge til rette for utvikling av språklige ferdigheter, og be elevene om å:

  • Skrive et argument for å understøtte påstanden om at privatpersoner eller etater som samler inn hastighetsdata fra kjøretøyer for å overvåke trafikksikkerheten, effektivt kan redusere frekvensen av bilulykker
  • Utfordre dem til å ta opp motkravet om at denne praksisen er et betydelig brudd på personvernet, og å bruke spesifikke bevis for å veie styrkene og svakhetene i de motstridende argumentene

Flere ideer til matematikk

I denne leksjonen laget elevene et grensesnitt for hastighetskontroll. Menneskelige sjåfører er dyktige til å vurdere veiforholdene og endre hastigheten i henhold til dette. Førerløse systemer må imidlertid trenes til å gjøre dette.
Hvis du vil innlemme matematisk kompetanseutvikling og utforske kunstig intelligens bak førerløse kjøretøy, ber du elevene om å:

  • Tenke på de ulike variablene de bør undersøke for å bestemme forholdet mellom veiforhold og deres innvirkning på kjøretøyets manøvrering og ytelse
  • Velge tre eller fire av disse variablene som skal inkluderes i en matematisk modell for veiforhold, og opprette en datatabell for å organisere relasjonene mellom disse variablene og kjøretøyets ideelle hastighet
  • Identifisere veiforholdsvariabler for tørre, våte og snødekte veier og deretter forutsi forholdet mellom disse variablene og trygge hastigheter (f.eks. en tørr veivariabel kan være grovheten i veien), med tanke på at førerløse kjøretøy bruker maskinlæringsprosessen til å identifisere og oppdatere forholdet mellom veitilstandsvariabler og kjøretøyhastighet

Vurderingsmuligheter

Observasjonssjekkliste for lærer
Lag en skala som stemmer overens med behovene dine, for eksempel:

  1. Delvis fullført
  2. Fullstendig fullført
  3. Overgikk forventningene

Bruk følgende kriterier til å evaluere elevenes arbeid:

  • Elevene kan identifisere hovedelementet til et problem.
  • Elevene styrer selv utviklingen av en fungerende og kreativ løsning.
  • Elevene kan kommunisere ideene sine tydelig.

Egenvurdering
Når elevene har samlet inn ytelsesdata, kan du gi dem tid til å reflektere over løsningene sine. Hjelp dem ved å stille spørsmål som:

  • Oppfyller løsningen kriteriene til designoversikten?
  • Kan robotens bevegelse(r) bli enda mer nøyaktige?
  • Har andre løst problemet på andre måter?

Be elevene om å gjennomføre en idédugnad og dokumentere to måter de kan forbedre løsningene sine på.

Tilbakemelding fra andre
Oppmuntre til parvurdering blant elevene slik at hver gruppe er ansvarlige for å evaluere sitt eget og andres prosjekt. Denne par-vurderingen kan bidra til å utvikle elevenes ferdigheter i å gi konstruktive tilbakemeldinger, så vel som å forbedre analyseferdighetene og bruken av objektive data for å støtte et argument.

Lenker til karrieremuligheter

Elevene som likte denne leksjonen, kan også være interessert i å utforske disse karrieremulighetene:

  • Forretningsvirksomhet og finans (entreprenørskap)
  • Produksjon og maskinteknikk (forprosjektering)

Lærerstøtte

Elevene kommer til å:
- Bruke designprosessen til å løse problemer i den virkelig verden

Naturfag etter 10.trinn

  • utvikle produkter ut fra kravspesifikasjoner og vurdere produktenes funksjonalitet, brukervennlighet og livsløp i forhold til bærekraftig
    utvikling
  • gjøre rede for begrepene fart og akselerasjon, måle størrelsene med enkle hjelpemidler og gi eksempler på hvordan kraft er knyttet til akselerasjon
  • gjøre greie for hvordan trafikksikkerhetsutstyr hindrer og minsker skader ved uhell og ulykker

Valgfag programmering

  • omgjøre problemer til konkrete delproblemer, vurdere hvilke delproblemer som lar seg løse digitalt, og utforme løsninger for disse
  • utvikle og feilsøke programmer som løser definerte problemer, inkludert realfaglige problemstillinger og kontrollering eller simulering av fysiske objekter

Elevmateriale

Elevark

Download to view and share the student worksheet.

CookiesLegal NoticePrivacy Policy

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