Een tweede knop toevoegen aan het hersenscherm - Python
Toolbox voor leerkrachten
-
Het doel van deze activiteit
Nu leerlingen ervaring hebben met het omgaan met het scherm in de hersenen als één grote knop, kunnen ze het scherm in twee knoppen veranderen. Met deze activiteit maken leerlingen kennis met het gebruik van geneste , if-else, statements om voorwaardelijke statements beter te beheren en de onderliggende logica daarvan. Studenten worden eerst door het bouwen van het project geleid, waarbij het indrukken van het scherm de robot naar links of rechts laat draaien. Vervolgens moeten ze de knoppen omdraaien, zodat de robot naar links gaat en nu naar rechts gaat, en andersom.
Voor meer informatie over if en if-else statements of andere statements die in deze activiteit worden gebruikt, kunt u de helpinformatie in VEXcode V5 raadplegen. Voor meer informatie over deze ingebouwde helptool, bekijk dit artikel.
Hieronder volgt een overzicht van wat uw leerlingen tijdens deze activiteit zullen doen:
- Beoordeling van het StopOrDrive project en de indeling van het scherm van de hersenen in pixels.
- Een nieuw LeftOrRight project bouwen terwijl je door de redenering van het programmeren wordt geleid.
- Het project aanpassen zodat de knoppen op het scherm omgekeerd werken.
- Breid uw leerproces uit: verdeel het scherm in twee knoppen. Als u deze knoppen indrukt, draait de robot naar links of rechts.
Zorg ervoor dat je de benodigde hardware, je technische notebook en VEXcode V5 bij de hand hebt.
| Aantal | Benodigde materialen |
|---|---|
| 1 |
VEX V5 Classroom Starter Kit (met up-to-date firmware) |
| 1 |
VEXcode V5 (nieuwste versie, Windows, macOS) |
| 1 |
Technisch notitieboekje |
| 1 |
StopOrDrive-project van de vorige Afspeelpagina |
Toolbox voor leraren
Suggesties voor lesstrategieën voor dit onderdeel vindt u in de kolom 'Bezorging' van de 'To Do or Not to Do Pacing Guide'! (Google Doc / .docx / .pdf)
Het hersenscherm kan meer dan één knop hebben.
Met deze activiteit programmeer je de robot om vooruit te rijden en naar links of rechts te draaien, afhankelijk van welke kant van het hersenscherm wordt ingedrukt.
De drie extra soorten commando's die je tijdens deze activiteit nodig hebt, zijn de volgende:
- aandrijflijn.turn(RECHTS)
- nummer < 50
- brain.screen.x_position()
U kunt de Help informatie in VEXcode V5 gebruiken om meer te weten te komen over de instructies.

Stap 1: Laten we beginnen met het bekijken van het StopOrDrive-project.
Laten we beginnen met het doornemen van het StopOrDrive-project.
In het StopOrDrive project stopte Clawbot als het scherm werd ingedrukt, anders reed hij door.
Het hele scherm was één grote knop, maar in het volgende project willen we de helft van het scherm als één knop hebben en de andere helft als de andere knop.
# Begin projectcode
terwijl Waar:
if brain.screen.pressing (): driveetrain.stop
()
while brain.screen.pressing ():
wait(5, MSEC)
else:
driveetrain.drive(FORWARD)
wait(5, MSEC)Om het scherm in twee knoppen te splitsen, moeten we meer weten over de lay-out van het scherm.

- Merk op dat de kolommen van links naar rechts in aantal toenemen. Het aantal kolommen is 48 en het scherm is 480 pixels breed.
- Noteer in je engineering notebook dat de x-waarde op het scherm gelijk is aan het aantal pixels gemeten van links naar rechts.
- Wat is de x-waarde van het midden van het scherm? Voor deze activiteit kun je je alleen op de x-as concentreren, omdat je alleen een linker- en rechterknop nodig hebt.
Toolbox voor leraren
-
antwoord
De x-waarde in het midden van het scherm is gelijk aan de helft van de breedte van het scherm in pixels. De x-waarde van het middelpunt is dus 240. Studenten hebben dit nummer nodig om de voorwaarde te programmeren voor het aanwijzen van de linker- of rechterkant van het scherm. Controleer dus of ze allemaal de juiste waarde hebben.
Vooruitkijkend naar de User Interface Challenge in het onderdeel Rethink, moeten leerlingen toepassen wat ze hebben geleerd om vier knoppen op het scherm te maken. Hiervoor hebben ze zowel de x- als de y-waarde nodig.
Tips voor leraren
Voor verdere ondersteuning kunt u deVEX Bibliotheekraadplegen voor aanvullende help-artikelen.
Stap 2: Programmeren voor twee knoppen.
- SlaStopOrDriveop als het projectLeftOrRight.
- Bouw het onderstaande project. Het zal de Clawbot naar links of rechts laten draaien wanneer het scherm wordt ingedrukt, afhankelijk van de kant waarop het wordt ingedrukt.
# Begin projectcode
terwijl Waar:
if brain.screen.pressing ():
if brain.screen.x_position () < 240: aandrijflijn.turn
(LINKS)
terwijl brain.screen.pressing ():
wait(5, MSEC)
else:
aandrijflijn.turn (RECHTS)
terwijl brain.screen.pressing ():
wait(5, MSEC)
else:
aandrijflijn.drive (VOORUIT)
wait(5, MSEC)- Laten we eens kijken wat dit project doet.
Het blijft controleren of het scherm is ingedrukt. Als het scherm niet is ingedrukt, rijdt de auto vooruit. Als dat wel het geval is, controleert de auto waar het scherm is ingedrukt.
Als de druk aan de linkerkant was (minder dan 240), dan draait de auto naar links. Anders draait het naar rechts. We hebben geen andere voorwaarde nodig voor wanneer de x-waarde groter is dan 240, want als deze niet minder is dan 240 (linksaf), moet deze groter zijn (rechtsaf). We hoeven ons maar met twee knoppen bezig te houden.
Dewhile en waitDe besturingscommando's na elke beurt zorgen ervoor dat het project wacht tot er niet meer op het scherm wordt gedrukt voordat het verdergaat.

- Nu het project is voltooid, download en voer het uit om te testen hoe het werkt.

- Maak aantekeningen in je technische notitieboekje over hoe de knoppen de bewegingen van de Clawbot regelen.
Tips voor leraren
Bij het testen moeten de studenten er rekening mee houden dat de gebruikersinterface, wanneer ze deze achter de Clawbot bedienen, omgekeerd lijkt te werken. Vanuit het perspectief van de gebruiker draait de Clawbot weg van de zijde die door de gebruiker wordt ingedrukt. Dat is geen optimale gebruikerservaring.
Stap 3: Pas het project aan voor een betere gebruikerservaring.
Bij het indrukken van de knoppen van het scherm van achter de Clawbot terwijl deze vooruit reed, drukte je aan de rechterkant van het scherm om naar links te draaien en aan de linkerkant van het scherm om naar rechts te draaien. Dat is geen goede User Experience. Een gebruikerservaring is hoe goed een gebruiker kan communiceren met een gebruikersinterface om een computersysteem te bedienen. Meer informatie over gebruikersinterfaces vindt u in het gedeelte Toepassen van dit lab.
In dit geval moeten we de gebruikersinterface verbeteren om de gebruikerservaring te verbeteren.
- Bekijk het LeftOrRight-project en herzie het zodat wanneer de gebruiker de knoppen van achter de Clawbot indrukt, de robot naar rechts draait wanneer de gebruiker op de linkerkant van het scherm drukt. Of anders draait de Clawbot linksaf.
# Begin projectcode
terwijl Waar:
if brain.screen.pressing ():
if brain.screen.x_position () < 240: aandrijflijn.turn
(LINKS)
terwijl brain.screen.pressing ():
wait(5, MSEC)
else:
aandrijflijn.turn (RECHTS)
terwijl brain.screen.pressing ():
wait(5, MSEC)
else:
aandrijflijn.drive (VOORUIT)
wait(5, MSEC)- Plan, test en herhaal dit project en documenteer het in uw technische notitieblok, zodat het project de Clawbot naar de zijkant van het scherm laat draaien waar de gebruiker achter de Clawbot op drukt.
Toolbox voor leraren
Studenten moeten deze wijzigingen in het project plannen, testen en verfijnen en deze vervolgens documenteren in hun technische notitieboekjes. Voor de individuele rubriek voor technische notitieboeken klikt u op een van de volgende links (Google Doc / .docx / .pdf), of klikt u op een van de volgende links voor teamnotitieboeken (Google Doc / .docx / .pdf). Vergeet niet de beoordeling aan de leerlingen uit te leggen voordat ze aan de slag gaan.
Teacher Toolbox
-
Oplossingen
Er zijn twee mogelijke manieren om het hierboven gestelde probleem op te lossen. De eerste manier staat beschreven in de instructie: Bekijk het project LeftOrRight en pas het zo aan dat wanneer de gebruiker op de knoppen achter de Clawbot drukt, de robot naar rechts draait als de gebruiker op de linkerkant van het scherm drukt. Anders gaat de Clawbot naar links.
# Begin projectcode
while True:
if brain.screen.pressing():
if brain.screen.x_position() < 240:
drivetrain.turn(RIGHT)
while brain.screen.pressing():
wait(5, MSEC)
else:
drivetrain.turn(LEFT)
while brain.screen.pressing():
wait(5, MSEC)
else:
drivetrain.drive(FORWARD)
wait(5, MSEC)De andere oplossing is om de Operator-instructie zo aan te passen dat de Clawbot naar links draait als de x-waarde groter is dan 240.
# Begin projectcode
while True:
if brain.screen.pressing():
if brain.screen.x_position() < 240:
drivetrain.turn(LEFT)
while brain.screen.pressing():
wait(5, MSEC)
else:
drivetrain.turn(RIGHT)
while brain.screen.pressing():
wait(5, MSEC)
else:
drivetrain.drive(FORWARD)
wait(5, MSEC)
Motiveer discussie
U moest coördinaten uit een coördinatenvlak gebruiken toen u de voorwaardelijke instructie programmeerde voor situaties waarin de x-waarde kleiner was dan 240 (linkerkant van het scherm). Om het scherm van de Brain visuele knoppen te laten tekenen, moet u ook coördinaten gebruiken.
Ga terug naar stap 2, waar u de coördinaten voor het scherm van de V5 Robot Brain te zien kreeg.

V:Wat is de x-waarde aan de rechterkant van het scherm?
A:De x-waarde loopt op van 0 aan de linkerkant tot 480 aan de rechterkant.
V:Het bereik van de x-waarde is dus 480 (0 tot 480). Wat is het bereik van de y-waarde?
A:Het bereik van de y-waarde is 240 (0 tot 240).
V:Waar ligt de oorsprong (0, 0) van dit coördinatenvlak?
A:De oorsprong bevindt zich linksboven.
V:U bevindt zich bovenaan het scherm als de y-waarde gelijk is aan 0. Waarom is dit ongebruikelijk?
A:Normaal gesproken neemt de y-waarde toe als u omhoog gaat, maar op het V5-scherm neemt de y-waarde toe als u omlaag gaat. Maar je kunt het je voorstellen als de y-waarde die toeneemt naarmate je verder weg beweegt van de oorsprong (0, 0) linksboven in het scherm.
Breid uw leerproces uit
In de User Interface Challenge van het onderdeel Rethink krijgen leerlingen de opdracht een project te ontwikkelen waarmee ze vier knoppen op het scherm kunnen maken om de klauw en arm van de Clawbot te bedienen. Voor die uitdaging moeten ze ook die vier knoppen op het scherm laten zien. Deze Extend Your Learning-opdracht zal, net als de vorige pagina's, helpen om je leerlingen voor te bereiden op de uitdaging. De opdracht heeft namelijk vier knoppen die geprogrammeerd moeten worden, terwijl deze opdracht er maar twee heeft.
Laat je leerlingen een gebeurtenis aan het programma toevoegen, zodat er op het scherm twee zichtbare knoppen verschijnen wanneer het project wordt uitgevoerd. Stel voor dat studenten de Help-functie in VEXcode V5 gebruiken voor informatie over gebeurtenissen, met name de informatie bij de opdrachtteken rechthoek. Laat de leerlingen bekijken hoe het scherm van de hersenen is georganiseerd in een coördinatensysteem op basis van het aantal pixels bij gebruik van de opdrachtteken rechthoek . Ze moeten dit begrijpen om parameters in die opdracht te kunnen instellen. Bovendien moeten ze weten hoe ze evenementen moeten uitzenden. In dit geval is de gebeurtenis het tekenen van knoppen.
Studenten moeten deze wijzigingen aan het project plannen, testen en verfijnen en deze vervolgens documenteren in hun technische notitieboekjes. Voor de individuele technische notitieboekrubriek klikt u op een van de volgende links (Google Doc / .docx / .pdf), of klikt u op een van de volgende links voor teamnotitieboeken (Google Doc / .docx / .pdf).
Hier is een voorbeeldoplossing:
# Begin projectcode
screen_buttons = Event()
def has_screen_buttons():
brain.screen.set_fill_color(Kleur.GROEN)
brain.screen.draw_rectangle(0, 0, 240, 120)
brain.screen.set_fill_color(Kleur.PAARS)
brain.screen.draw_rectangle(240, 0, 480, 120)
brain.screen.set_fill_color(Kleur.ORANJE)
brain.screen.draw_rectangle(0, 120, 240, 240)
brain.screen.set_fill_color(Kleur.CYAAN)
brain.screen.draw_rectangle(240, 120, 480, 240)
wait(1, SECONDEN)
screen_buttons(has_screen_buttons)
while Waar:
screen_buttons.broadcast()
als brain.screen.pressing():
als brain.screen.x_position() < 240:
als brain.screen.y_position() < 120:
claw_motor.spin(VOORUIT)
terwijl brain.screen.pressing():
wacht(5, MSEC)
anders:
claw_motor.spin(OMKEER)
terwijl brain.screen.pressing():
wacht(5, MSEC)
anders:
als brain.screen.y_position() < 120:
arm_motor.spin(VOORUIT)
terwijl brain.screen.pressing():
wacht(5, MSEC)
anders:
arm_motor.spin(OMKEER)
terwijl brain.screen.pressing():
wachten(5, MSEC)
claw_motor.stop()
arm_motor.stop()
wachten(5, MSEC)Voor een extra professioneel realistische ervaring kunt u uw leerlingen hun klasgenoten om feedback laten vragen over hun twee kleurkeuzes.
Zorgen de gekozen kleuren ervoor dat u de interface wilt gebruiken, of welke kleuren zouden zij als gebruikers het liefst hebben?
Een onderdeel van het ontwikkelen van een geweldige gebruikersinterface is het verzamelen van gegevens over de gebruikerservaring en zelfs esthetische voorkeuren.