Stundas uzdevums: Aprīkot robotu ar krāsu sensoru, ieprogrammēt spēju atšķirt krāsas un izveidot algoritmu, kas ļauj robotam autonomi sekot melnai līnijai uz laukuma.
Datorika 7. klase (D.7.2.1., D.7.3.1., D.7.4.2.)70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un pieraksti, kas strādā. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.
Priekšzināšanu robeža: uzdevumos izmanto tikai iepriekš apgūto un šīs lapas teorijas/koda piemēros parādīto. Ja parādās jauna komanda vai rīks, vispirms atrod tās paraugu teorijas blokā.
Līdz šim mūsu robots darīja vienu darbību, kamēr kaut kas notika (Wait until). Bet ko darīt, ja robotam nepārtraukti jāizvēlas starp divām rīcībām? Tam mēs izmantojam "If-Else" (Ja-Tad-Citādi) blokus.
Vizuālais orientieris: dzeltenais If-Else bloks atrodas Forever ciklā, un tā nosacījumā izmanto Color Sensor mērījumu.
# LEGO SPIKE Python - krāsu sensora nolasīšana
from spike import ColorSensor, Motor
from spike.control import wait_for_seconds
sensors = ColorSensor("E")
kreisais = Motor("A")
labais = Motor("B")
while True:
krasa = sensors.get_color()
if krasa == "black":
kreisais.start_at_power(20)
labais.start_at_power(50) # pagriežas pa kreisi
else:
kreisais.start_at_power(50)
labais.start_at_power(50) # taisni
Pievienojiet krāsu sensoru un lieciet robotam braukt taisni, līdz tas ierauga sarkanu līniju (vai sarkanu LEGO klucīti uz grīdas).
start moving [Straight].wait until bloku un tajā ievietojiet gaiši zilo sensora bloku [Color Sensor on E] sees [Red].stop moving bloku. Pārbaudiet!Izveidojiet programmu, kas ļauj robotam sekot melnas līnijas malai, izmantojot atstarotās gaismas intensitāti.
forever ciklu.If ... Else ... bloku.[Color Sensor on E] reflection < [50]%. (Viss, kas tumšāks par 50%, skaitīsies līnija).start moving at [30] % steering).start moving at [-30] % steering).Pārbaudiet robotu uz robotikas paklāja un noregulējiet parametrus tā, lai kustība kļūtu vienmērīgāka un ātrāka.
set movement speed bloku. Kas notiek, ja palielina ātrumu? Robots, visticamāk, līniju pazaudēs. Atrodiet labāko balansu starp ātrumu un stabilitāti!Izaicinājums ātrākajām komandām – izveidojiet programmu, kurā robots brauc pa līniju, bet saskaita, cik reizes tas šķērsojis zaļu līniju/krustojumu, un apstājas pēc 3. reizes.
forever ciklu uz repeat until [Krustojumi = 3].change [Krustojumi] by 1 un nedaudz pagaidīt (lai nesaskaitītu vienu līniju vairākas reizes).
# SPIKE Word Blocks vizuālā koda tekstuālā reprezentācija
when program starts
set movement motors to [A] and [B]
set movement speed to [25]%
forever:
if [Color Sensor on E] reflection < [50]% then:
start moving at [25] % steering # Griežas uz vienu pusi (prom no līnijas)
else:
start moving at [-25] % steering # Griežas uz otru pusi (atpakaļ uz līniju)