1. Tēma - // LEGO SPIKE un robota pamatkustības
Apgūsti LEGO SPIKE Prime robotu montāžu un programmēšanu. Piecu stundu laikā iemācies vadīt motorus, nolasīt sensorus un programmēt autonomu robotu, kas seko līnijai un izvairās no šķēršļiem.
5 stundas - no montāžas līdz pārbaudes misijai
Pēc katras stundas robots dara ko jaunu. Apgūstam secīgi: vispirms kustība, tad sensori, tad autonoma uzvedība.
Ievads LEGO SPIKE un pamatkustības
Komplekta iepazīšana, haba un motoru pieslēgšana, pirmā kustības programma.
Distances sensors un šķēršļu izvairīšanās
Ultraskaņas sensors mēra attālumu, robots automātiski apbrauc šķēršļus.
Krāsu sensors un līniju sekotājs
Sensors atpazīst krāsas un melno līniju - robots seko trasē autonomi.
Trešā ass un manipulatori
Pievienojam papildu motoru - robota roka paceļ un novieto objektus.
Noslēguma projekts: Pārbaudes misija
Robots veic pilnu trasi - seko līnijai, izvairās no šķēršļiem, paceļ objektus.
Kursa pārskats - Robotika
Abi tēmu bloki vienā skatā - LEGO SPIKE un Arduino secīga apguves ceļš.
1. tēmas špikeris - LEGO SPIKE
Kustība, sensori, satvērējs un misija. Katrs bloks atbilst vienai stundai.
1.1 Pamatkustība ar rozā blokiem
when program starts
set movement motors to [A] and [B] <- OBLIGĀTI pirmais
set movement speed to [40]%
move [forward] for [50] [cm] <- brauc uz priekšu 50 cm
move [Right] for [180] [degrees] <- griežas
repeat [4] <- kvadrāts: 4 reizes
move [forward] for [20] [cm]
move [Right] for [180] [degrees]
UZMANĪBU par pagriezieniem:
180 grādi = RITEŅA apgrieziens, NEVIS robota pagrieziens telpā!
Lai robots pagrieztos par 90 grādiem pret sienu, riteņiem
bieži jāgriežas 175-185 grādi. To atrod, mainot skaitli un pārbaudot.
Rozā "Movement" bloki = abi motori kopā (kā automašīnai)
Zilie "Motor" bloki = viens konkrēts motors (roka, satvērējs)
Porti: šajā kursā A = kreisais ritenis, B = labais, C = satvērējs, E/F = sensori.
1.2 Distances sensors
when program starts
set movement motors to [A] and [B]
start moving [forward] <- BEZGALĪGS bloks
wait until [Distance Sensor on F] distance < [15] [cm]
stop moving
NEPAREIZI:
move [forward] for [10] [cm] <- šim ir beigu punkts,
wait until ... tāpēc tas IGNORĒ sensoru
PAREIZI:
start moving [forward] <- bez beigu punkta,
wait until ... tāpēc sensors var to apturēt
Izvairīšanās cikls:
forever
if [Distance Sensor on F] distance < [15] [cm] then
move [backward] for [10] [cm]
move [Right] for [180] [degrees]
else
start moving [forward]
Ja robots ietriecas sienā, gandrīz vienmēr iemesls ir move for [10] cm lietošana start moving vietā.
1.3 Krāsu sensors un līniju sekotājs
# Slieksni NEVAR uzminēt - to jāIZMĒRA katrā klasē!
# 1. Noliec sensoru uz MELNĀS līnijas -> portu skats rāda, piem., 8%
# 2. Noliec sensoru uz BALTĀ laukuma -> portu skats rāda, piem., 76%
# 3. Slieksnis = vidējais aritmētiskais: (8 + 76) / 2 = 42
when program starts
set movement motors to [A] and [B]
set movement speed to [25]%
forever
if [Color Sensor on E] reflection < [42]% then
start moving at [20] % steering <- redz melnu, griežas atpakaļ
else
start moving at [-20] % steering <- redz baltu, griežas atpakaļ
# Divi režīmi:
# Color atpazīst krāsu (sarkans, zaļš) - prasa labu gaismu
# Reflected Light 0-100% - LĪNIJAI lieto ŠO, tas ir precīzāks
Ar noklusējuma slieksni 50 tumšākā klasē robots baltu virsmu noturēs par melnu un aizbrauks prom no līnijas.
1.4 Satvērējs uz trešā motora
# Satveršanai lieto LAIKU, nevis grādus!
NEPAREIZI:
run motor [C] for [90] [degrees]
# Ja klucītis ir pa vidu, motors nevar sasniegt 90 grādus
# -> programma gaida MŪŽĪGI un tālāk neiet
PAREIZI:
start motor [C] at [30]% speed
wait [1] seconds
stop motor [C]
Pilns misijas algoritms:
when program starts
set movement motors to [A] and [B]
run motor [C] to position [0] degrees <- atver spīles (sākuma stāvoklis)
move [forward] for [30] [cm]
start motor [C]
wait [1] seconds
stop motor [C] <- satvēra
move [backward] for [30] [cm]
run motor [C] to position [0] degrees <- atlaida
# Zobrati: mazs griež lielu -> vairāk SPĒKA, mazāk ātruma
Ja programma "iestrēgst" un robots nekustas tālāk, meklē run motor for degrees bloku.
1.5 Misija: sākuma stāvoklis ir obligāts
# Biežākā problēma: misija izdodas PIRMAJĀ reizē, bet otrajā ne.
# Iemesls: spīles palika aizvērtas un mainīgie - saskaitīti.
when program starts
# --- 1. SĀKUMA STĀVOKLIS (bez šī misija strādā tikai vienreiz) ---
set movement motors to [A] and [B]
set movement speed to [40]%
run motor [C] to position [0] degrees # spīles atpakaļ vaļā
set [Kravas] to [0] # skaitītājs uz nulli
# --- 2. MISIJA ---
move [forward] for [30] [cm]
wait until [Distance Sensor on F] distance < [10] [cm]
stop moving
start motor [C]
wait [1] seconds
stop motor [C]
move [backward] for [30] [cm]
run motor [C] to position [0] degrees
change [Kravas] by [1]
# Testē TRĪS reizes pēc kārtas - tikai tad zini, ka misija ir stabila.
Sensoriem lieto portus E un F - A, B un C jau ir aizņemti ar motoriem.