2014 m. lapkričio 26 d., trečiadienis

Kaip sudominti programavimu pirmoką, arba Scratch+Arduino=

Visada su pavydu skaitau straipsnius, kuriuose aprašomas ankstesnysis IT ugdymas užsienyje. Tiesa, daug straipsnių "ateina" iš Raspberry Pi fondo - ten ištisos klasės susiperka minėtus kompiuteriukus, ir su šia sritimi susipažįsta, mano nuomone, nuo teisingo galo - nuo elementaraus algoritmavimo, logikos ir šių rezultato - programavimo. Aš labai tikiuosi, kad tokie dalykai vyksta ir čia, Lietuvoje, deja, aš apie tai nesu girdėjęs. Asmeniškai man pažintis su kompiuteriu prasidėjo programuojant elementariuųs dalykus namie, o mokykloje informatika pradžioje buvo tikra informatika - būlio algebra, loginės lygtys ir panašiai, o ne kompiuterinis raštingumas, įvilktas į skambų informatikos pavadinimą. Na, bet čia, žinoma, kiekvienam savo.



Šia įžanga noriu pasakyti, kad manau, jog programavimui ir jo pradmenims skiriama per mažai dėmesio. Ir tuo pačiu metu turiu namie pirmoką, kuris kartais kuo nors susidomi. Tad kodėl nepasistengus ir nepabandžius jo sudominti ne žaidimais, o programavimu? Taip sakant, lengvas stumtelėjimas. Tik čia yra viena problemėlė - sausos logikos lygtys, kad ir kaip jos būtų naudingos gyvenime, yra visiškai neįdomios, o programavimas tekstu, kad ir kokio aukšto lygio programavimo kalba bebūtų, pirmokui tikrai neįkandamas.

PROGRAMAVIMAS - "SCRATCH"

Šitą suprasdami, MIT (Masačiūsests'o technologijų institutas) sukūrė tokią programavimo aplinką, kur programuoti galima vizualiai matant eigą ir veikimą. Projektas vadinasi Scratch - labai smagi programa, kur net vyresniems gali pasirodyti naudinga, jei neteko programuot. Visgi ji skirta pirmiausia 8-16 metų vaikams, jaunesniems - su suaugusių pagalba. Tiesa, teko girdėti situaciją, kai tik su Scratch programuoti buvo mokomi dvyliktokai (gimnazistai), kas, mano nuomone, yra visiška nesąmonė. (Žinau, kad yra ir kitų tokios stiliaus programavimo aplinkų, tik nei aprašinėsiu, nei ieškosiu - dabar pakaks šitos).
Viskas būtų labai gražu - su Scratch galima padaryti tikrai įstabių dalykų, tačiau puikiai žinau, kad didžiausią malonumą programavimas teikia tada, kai galima valdyti tikrus dalykus - pamenu, kiek buvo džiaugsmo man pačiam, pirmą kartą pamirksinus LED su AVR mikrovaldikliu. Todėl senokai sukau galvą, kaip čia prie Scratch prijungus kažką tikro ir apčiuopiamo, ką mano pirmokas galėtų pabandyt pajunginėt. Buvau radęs Scratch versiją Raspberry Pi, kuri gali valdyti GPIO jungties portus - netgi prijungiau porą žingsninių varikliųkų, ir raspberis juos sėkmingai pasukinėjo. Ta graži pradžia baigėsi vieno iš varikliukų sulaužymu (mano kaltė), o kiek vėliau ir sekusiu raspberio numirimu (ne mano kaltė, bet dar turiu vilties). O ir šiaip, veikimas nebuvo labai patikimas, kartais pakibdavo, o ir darbas, prisijungus per nuotolinį darbalaukį nelabai patiko. Žodžiu, nepasiteisino.
Tačiau kažkada paieškojęs radau dar smagesnį projektą - vadinasi S4A, arba Scratch for Arduino. Ten principas labai paprastas - kiek modifikuotas Scratch siunčia komandas per kompiuterio RS232 prievadą Arduino plokštei, kur sukasi programa (firmware), priimanti šiuos duomenis, ir siunčianti savuosius atgal. Iš Scratch į Arduino siunčiama keletas skaitmeninių išėjimų, keletas PWM signalų ir keturių servo varikliukų valdymo signalai (jei kas nežino - servo varikliai tai tokie, kurie gali pasisukti nustatytą laipsnių skaičių, arba gali suktis ir pastoviai, bet čia atskira tema, tiesiog užteks žinoti, kad jie valdomi kitaip, nei paprasti DC varikliukai bei žingsniniai). Tuo tarpu iš plokštės siunčiami šeši analoginiai įėjimai ir du skaitmeniniai. To daugiau nei pakanka paprastam pamirksinimui ar pasukinėjimui.

VALDYMAS - "ARDUINO"

Bet tam reikia Arduino plokštės, kurios aš neturiu. Kažkaip iki šiol neteko su šiuo produktu susidurti, nors pasaulyje jis baisiai populiarus. Iš esmės ten tas pats AVR mikrovaldiklis, tik jau paruoštas naudoti, su paruoštomis jungtimis ir USB jungtimi - nereikia jokių programatorių, viskas daroma per USB ir mikrovaldiklyje esančią programą (bootloader'į). Ir tos plokštės nėra brangios - pavyzdžiui, Arduino UNO lietuvoje kainuoja apie 70-80 lt. Jei užsisakinėt iš Kinijos - kaina pasirodys visai juokinga - ten prikepta Arduino klonų, kainuojančių iki 10$, pasiieškokite www.dx.com .
Kadangi Arduino neturiu lygiai taip pat, kaip neturiu kantrybės, vardan tokio tikslo panorėjau pasidaryti pats. Yra labai puikus pradžiamokslis apie Arduino susijunginėjimą ant maketinės plokštės. Aš ant maketinės plokštės nedariau, litavau, nes norėjau, kad būtų patogiau naudot. Gavosi va toks daikčiukas:

Lyginant su originalia Arduino plokšte (turiu omeny ir jos klonus), šis gaminys neturi keleto dalykų: maitinamas gali būti tik 5V (originalus - 8-16V), neturi integruoto keitiklio iš USB į UART - naudojau savo, nėra 3,3V įtampos papildomų plokščių maitinimui (pavyzdžiui, Ethernet adapteriui), nėra ISP programavimo jungties, todėl norint programuoti su turimu USBtiny reikia junginėti prie kontaktų po vieną laidelį. Ir, žinoma, vaizdas šiek tiek prastesnis :) Beje, kaina tikrai nesigavo mažesnė, nei Arduino klono iš Kinijos, čia net neįvertinant sugaišto laiko. Šios plokštelės schema - visiškai elementarus Atmega328 prijungimas su 16MHz kvarcu, o prie beveik kiekvienos kojos - jungtis laideliui.
Laikysim, kad naudojamas Arduino arba jo klonas, todėl gamybos ir prijungimo neaprašinėsiu.
Sekantis žingsnis - S4A programos įrašymas į valdiklį, bei tam pritaikytos Scratch aplinkos diegimas. Viską galima rasti http://s4a.cat/ , spausti ant "Downloads". Mikrovaldiklio programą atidarius su Arduino IDE nieko keisti nereikia, užteks tiesiog įrašyti į mikrovaldiklį. Jį perkrovus turėtų nuolat mirksėti TxD LED - tai rodo, kad įrašyta S4A programa veikia tinkamai - siunčia duomenis kompiuteriui.
Įjungus S4A programą, plokštę ji turėtų surasti automatiškai. Jei ne - ant dešinėj pusėj esančio Arduino paveiksliuko reikia spausti dešinį klavišą, sustabdyti paiešką ir pasirinkti COM proevado numerį. Jeigu skaičiai ant paveiksliuko pradėjo greit keistis, o RxD LED ant Arduino plokštės pradėjo mirkėti - plokštė prijungta prie kompiuterio, galima programuoti. Vaizdelis turėtų būti maždaug toks:

Laukeliuose prie Arduino paveiksliuko rodomi analoginių ir skaitmeninių įėjimų vertės, kurias galima panaudoti duomenų gavimui, pavyzdžiui, iš šviesos jutiklio arba paprasto mygtuko. Tuo tarpu išėjimus valdyti galima čia matomomis mėlynomis komendomis.

PIRMAS PIRMOKO PROJEKTAS

Savo pirmokui pačiai pradžiai padariau šviesoforiuką iš trijų šviesos diodų. Tris švieseles pamirksinti nėra sunku, ir pirmai pažinčiai, manau, užteks. Meno kūrinio daryti nesistengiau, tai gavosi šviesoforas - negražuolis, bet savo funkciją atliko puikiai:

Visi LED prijungti per 1K rezistorius - tiesiogiai LED prie tokių įrenginių jungti, kaip žinia, negalima. 1K šiek tiek gal per didelės varžos, bet tokie tebuvo po ranka. Raudoną prijungus prie 10 kontakto, geltoną - prie 11, o žalią prie 12 kontakto, eismo reguliavimą atlieka tokia programa:

Lygiai taip pat nesunkiai galima padaryti valdymą klaviatūra. Čia paprasčiausi dalykai, tačiau panorėjus galima sukurti visai įdomių projektų.
Mano pirmokas sėkmingai visą vakarą linksminosi junginėdamas šviesoforą, tuo tarpu sesė atliko eismo dalyvių vaidmenis. Rodos, toks programavimas patiko - džiaugėsi, kai kažkas pavyko pačiam, ir ėjo girtis mamai. Nežinau, kiek ilgam, bet sako, kad gera pradžia - pusė darbo. Jei kada nors prisiruošiu nusipirkti servo varikliukų, bus galima padaryti judantį kažką.
Tokio sprendimo (Scratch + Arduino) trūkumas tas, kad visą laiką sistema turi būti prijungta prie kompiuterio. S4A puslapyje yra nuorodų, kaip visa tai įmanoma valdyti be laidų, specialaus Arduino priedo pagalba, tačiau man pradžiai bus gerai ir su laidu. Žinoma, galimybė su Scratc parašytą programą įrašyti į mikrovaldiklį atrodo viliojančiai, bet to, spėju, dar teks palaukti. Dabar svarbu leist savo pirmokui džiaugtis pasiekimais.



Komentarų nėra:

Rašyti komentarą