Elektronika kaip hobiu domėjausi nuo 5 klasės, tik dėl visiškai kitokio darbo pobūdžio prie elektroninių komponentų nebuvau rimčiau prisėdęs jau daugiau nei 7 metai. Įsivaizduokit koks džiaugsmas mane apėmė, kai sužinojau, kad mano OggCamp 2009 laimėta Arduino MEGA yra miniatiūrinė elektroninių prototipų kūrimo platforma! Viskas būtų gerai, jei tik prieš pradėdamas eksperimentuoti su šituo gėriu būčiau žinojęs, kad viskas nebus taip paprasta kaip atrodė iš pirmo žvilgsnio, bet apie viską iš pradžių. :)
Kas yra Arduino MEGA?
Tai yra ATMega mirkroprocesorium (didelis juodas blynas plokštės viduryje) paremta pigi prototipinių elektroninių įrenginių kūrimo plokštė, žmonėms, kurie mažai nusimano apie elektroniką. Įdomu yra tai, kad Arduino – atviro programinio kodo ir harware platforma. Visi brėžiniai, techniniai duomenis ir programavimo informacija yra prieinama viešai ir bet kas pagal pateiktą informaciją gali susirinkti plokštę pats arba užsisakyti jau surinktą. Arduino platformų yra įvairių, mano turima MEGA turi daugiausia įėjimų/išėjimų tarp kurių 32 skaitmeniniai, 16 analoginių ir 4 grupės skirtų bendravimui tarpusavyje tarp pačių plokščiu arba kitais įrenginiais nuosekliu protokolu. Plokštės suprojektuotos taip, kad ant jų galima būtų dėti shield’us (šarvus). Tai yra kitos plokštės, kurios maunasi viena ant kitos ir ant pačios Arduino, bendraujančios su mikroprocesoriaus smegenim per įėjimus/išėjimus ir galinčios atlikti bala žino kiek funkcijų: rodyti LCD displėjuje tekstą, priimti signalus iš jungiklių, temperatūros, šviesos, drėgnumo, slėgio ir kitokių daviklių, dirbti kaip ethernet ar wireless įrenginys, kuris suteikia plokštei galimybę bendrauti internetu ir t.t. Visų galimybių išvardinti neįmanoma, nes jos apribotos tik fantazija ir piniginės storumu. :) Pavyzdžiui, čia – Arduino tinklo plokštė, kurios pagalba galima jungtis prie interneto:
Arduino programavimas
Programavimas vyksta prijungus Arduino plokštę prie kompiuterio per USB jungtį ir su specialiu IDE sukompiliavus kodą jis nusiunčiamas tiesiai į mikroprocesoriaus atmintį. Po to USB jungtį galima atjungti ir įrašyta programa toliau veiks pajungus plokštei atskirą maitinimo šaltinį.
Pirmoji programa
Paprasčiausia programa – mirksintis šviesos diodas, kurią aš nusprendžiau šiek tiek patobulinti ir sukurti pėsčiųjų šviesoforą. Kaip jis veikia galite pamatyti čia:

O čia yra kodas kuris veikia mikroprocesoriuje:
int carRedPin = 13; int carYellowPin = 12; int carGreenPin = 11; int pedestrianRedPin = 10; int pedestrianGreenPin = 9; // The setup() method runs once, when the sketch starts void setup() { pinMode(carRedPin, OUTPUT); pinMode(carYellowPin, OUTPUT); pinMode(carGreenPin, OUTPUT); pinMode(pedestrianRedPin, OUTPUT); pinMode(pedestrianGreenPin, OUTPUT); } // the loop() method runs over and over again, // as long as the Arduino has power void blink(int light) { digitalWrite(light, LOW); delay(500); digitalWrite(light, HIGH); delay(500); digitalWrite(light, LOW); delay(500); digitalWrite(light, HIGH); delay(500); digitalWrite(light, LOW); delay(500); digitalWrite(light, HIGH); delay(500); digitalWrite(light, LOW); } void loop() { digitalWrite(carRedPin, HIGH); digitalWrite(pedestrianGreenPin, HIGH); delay(3000); blink(pedestrianGreenPin); digitalWrite(pedestrianRedPin, HIGH); digitalWrite(pedestrianGreenPin, LOW); delay(1000); digitalWrite(carYellowPin, HIGH); delay(1000); digitalWrite(carRedPin, LOW); digitalWrite(carYellowPin, LOW); digitalWrite(carGreenPin, HIGH); delay(3000); blink(carGreenPin); digitalWrite(carYellowPin, HIGH); delay(2000); digitalWrite(carYellowPin, LOW); digitalWrite(carRedPin, HIGH); delay(1000); digitalWrite(pedestrianRedPin, LOW); }
Pradžiai nurodau kurios jungtys veiks kaip išėjimai, tada pagrindiniame cikle loop tam imituojant šviesoforą tikru laiku yra įjungiami vieni šviesos diodai ir tam tikru metu išjungiami kiti.
Mano istorija su Arduino
Čia tikriausiai taisyklė, kad mano eksperimentavimas su elektronika niekada nebūna paprastas. Arduino neišimtis. Iš pradžių man niekaip nepavyko nusiųsti paprasčiausios demonstracinės programos į plokštę, nes IDE metė klaidą, kad nepavyksta susibendrauti su MEGA. Jau buvau beveik įsitikinęs , kad gavau defektuotą plokštę, bet rankų vis tiek nenuleidau. Dovanotam arkliui į dantis nežiūrima. :)
Besiknisdamas forumuose išsiaiškinau, kad mikroprocesoriuje tiesiog nebuvo bootloader’io, kuris yra kaip BIOS kompiuteryje: jo pagalba plokštė gali bendrauti su kompiuteriu per USB, o be to Arduino tėra tik mikroschemų krūva. Standartiškai visos parduodamas Arduino savyje jau turi įdiegtą bootloader, bet mano atveju mikroschema buvo visiškai tuščia.
Nebūdamas visai tikras, kad su pačia Arduino hardware viskas gerai, nusprendžiau rizikuoti ir internetu nusipirkti atskirą programatorių USBTinyISP. Iš tokios detalių krūvos:
Susilitavau tokį įrenginį:
Šio universalaus programatoriaus pagalba į plokštę nusiunčiau bootloader ir pagaliau Arduino pradėjo bendrauti per USB! Iš karto susidūriau su kitu nepatogumu: kiekvieną kartą programuojant mikroprocesorių teko spaudinėti plokštėje esantį Reset mygtuką, nors plokštės nuresetinimas turėjo vykti automatiškai IDE nuspaudus Upload. Šį gerai žinoma Arduino MEGA defektą panaikinau prilitavęs teisingą keramikinį kondensatorių:
Plokštę priversti veikti užtrukau apie savaitę, bet už tai setisfekšinas padarius pirmą veikiančią programą nerealus. :) Pagaliau mano programos „ištrūko“ iš kompiuterio ir galės reaguoti į fizinį pasaulį!
Viskas, garantuotai turiu naują „ligą“. :)
Kas toliau?
Dabar kai viskas veikia ir ištestuota pabandysiu įgyvendinti savo seną svajonę ir sukurti kokį nors autonominį kliūtis apvažiuojantį robotą. Šiaip robotų kūrimo platformos kainuoja kosminius pinigus – nuo £100 be jokios elektronikos ir varikliukų. Sumąsčiau genialią mintį: Anglijoj žaislų parduotuvėse visokios radijo bangom valdomos mašinos kainuoja kapeikas, todėl vos už £7 nusipirkau naują tik su pakavimo defektu R/C mašiną ir tikėjausi užsiimti jos vandalizacija.
Tik kuomet vakar prieš išardant dalimis su ja pabandžiau šiek tiek pažaisti, pasirodo nusipirkau visai fainą žaislą, kuris labai jėgiškai driftina ant kilimo. Sūnus, aišku, iš karto pareiškė į jį teises. Na ir ką dabar padarysi? Teks ieškotis kažko kito skrodimui, bet apie tai jau kituose mano įrašuose. :)
Super, aš irgi noriu pabandyti :-) O koks nors setup’as tai daryti su Linux yra įmanomas?
Arduino veikia su Linux, Windows ir Mac OS. Aš tik pavyzdžiui turėjau problemų su USBTinyISP, nes Windows jo nesuprato, o Linux – viskas veikė be problemų. Šiaip manau, kad Linux palaikymas yra geriausias nes visa platforma yra opensource.
Maniškė plokštė irgi neseniai atėjo. Bottloaderio kinai įkelti nepamiršo :)
Man patiko, kad su Arduino galima gen lengva programuoti žmogui neišmananačiam mikrokontrolerių, nes yra paruošta naudingų fukcijų. Nereikia skaityti Atmega datasheeto ir žiūrėti, kokį ten registro bitą keisti.
Aš tai su PWM pažaidžiau kolkas:
@Vidmantas Arduino softas veikia tiek su Linux ar Mac OS X
Admin EDIT: Pataisiau tavo kodą :)
Aha, kaip supratau tai tu padarei vieno diodo feidinimą o kito įsijungimą :)
Kur pirkai saviškę?
Pirkau per Ebat iš kinų. http://cgi.ebay.com/ws/eBayISA.....AQ:US:1123 Čia kaip ir neoriginali, nors ir indentiška toms gaminamoms Italijoje :)
Tai ten jokio skirtumo kur pagaminta, galima gi iš detalių susirinkti ir pačiam ant kartono :)
http://lab.guilhermemartins.ne.....no-prints/
Žinau, kad plokštės brežinia yra kaip ir atviro kodo, kas nori tas gamina. Tik va geriau atrodo kai ant plokštės parašyta „Made in Italy“ ne „Made in China“ :D
Galbūt, aš tik neabejoju, kad jei pritrūksiu plokščių tai nesukdamas sau galvos imsiu iš kitaicų, nes pas juos net su siuntimu dvigubai pigiau gali nusipirkti, nei čia Anglijoj :) Aišku, tik kad reiks palaukti kol atsiųs, bet čia yra smulkmena.
Sveikinu Arvydai!
turiu pats Arduino Duemilanove ir kiek teko ieškoti informacijos internete tai yra pirmasis įrašas gimtąja kalba :)
lauksim naujų projektų
Ačiū! Jau renku visokių sensorių šoping listą. :)
Vidmantai, Su linux įmanoma viskas . Čia nuoroda: http://www.arduino.cc/playground/Learning/Linux
Arvydai,
Sveikinu užsikrėtus nauja liga, gal kiek gaila, nes vaistų nėra :D
Taip pat norėjau paklausti iš kur pirkai programerį? Kaip rašei, jis dalimis ir litavai jį pats, bet programatoriaus valdiklis jau buvo užprogramuotas?
Taip pat norėjau pasakyt, kad perskaitęs šitą įrašą užsisakiau Arduino Nano, nebe iškenčiau.
Programerį pirkau čia http://www.oomlout.co.uk/avr-p.....3j7ugekt21 . Taip, mikroprocesorius buvo užprogramuotas. Aišku, tai patikrinau tik užsisakęs prekę, bet viskas buvo gerai, nes sulitavus veikė iš karto.
Sėkmės tau su taviškiu NANO! :)
Gaila, bet mano NANO atšaukė :( Kinui nepatinka Lietuva. Bet nėra to blogo, kas neišeitų į gerą. Radau dar geresnį „Arduino Duemilanove“ už panašią kainą ir Anglijoje, o ne Kinijoje. Kitą savaitę jau manau turėsiu.
Programatorių galima pačiam susilipdyti iš kelių rezitorių ant LPT jungties. Tik trūkumai, neveikia su ilgu laidu, ir pats didžiausias, jog sunku rasti LPT lizdą šiais laikais :)
Aha, būten dėl tos priežasties, kad neturiu LPT lizdo, teko pirkti USB programatorių :)
Geras. Man patiko :) Laukiu daugiau tokių įrašų su įvairiausiais pavyzdžiais. :)
Bus įdomu paskaityti apie tolimesnius eksperimentus ;)
nors nieko nesurpantu apie elektrotechnika, bet mane tai LABAI veža ir domina! super straipsnis, seilė varva :)
Man dar vienas (Kol rašiau dar keli :D) klausimas iškilo.
Kokia čia programavimo kalba?
Visos programos ant mano būsimo „Duemilanove“ veiks taip pat kaip ir su „mega“ be jokio papildomo modifikavimo?
Taip pat gal įmanoma pasileisti kokį emuliatorių rodantį kas su kokia programa vyksta?
Duemilanove skiriasi nuo Mega tik tuo kad maziau portų ir gal kontroleris mažiau atminties turi. O programavimas tas pats :) Todėl reiks sužiūrėti ar mega progromos kode esančius portu tu turi :)
Aš kažkaip galvoju, kad pradžiai man užteks ir „Duemilanove“ kol tiek outų panaudosiu pats išmoksiu tokią pasidaryt :D
O galima „Duemilanove“ panaudoti kaip programatorių užprogramuoti kitam mikrovaldikliui? (Į jį įrašyti Bootloaderį)
Galima http://tinker.it/now/2006/12/0.....rogrammer/
Tai reiškia, kad kitus gaminsiu pats, nes savikaina ant montažinės plokštės gaunasi apie 20-30 litų :)
Aivarai, portai baigsis kai tik pradėsi konstruoti kažką įdomaus pvz LED matricas, kūbus ir pns
O jai nepradėsiu? Jai pažaisiu valandą ar dieną ir man pasirodys per sudėtinga ir paliksiu dulkėti stalčiuje?
Mažiausiai 100 litų už Kinijoj sulipdytą Megą, arba 200 už tikrą itališką manau truputi per daug, vien dėl susipažinimo su tokiais mikrovaldikliais.
išleisti 100 – 200 Lt ir padėti į stalčių truputi per didelė prabanga ;)
Techniškai kalba – C, bet eilinis arduino naudotojas grynos C niekad nemato – viskas daroma naudojant arduino „karkasą“.
Geras startas, taip ir toliau ;)
Kaip yra sukuriamas kodas pagal norimą konkrečią užduotį?Naudojant kokią nors programavimo kalbą?
Arduino programavimui naudojama C kalbos sintaksė, o programinis kodas rašomas specialiai tam sukurtame IDE. Daugiau apie kalbos sintaksę ir API gali rasti čia:
http://www.arduino.cc/en/Reference/HomePage
Sveiki,
klausimas durnas bet kadangi daug protingu zmoniu tikiuosi neisizeisit ir papasakosit normalei :)
Ar verta pirkti mega? Ar visgi su senesniais variantais pradeti zaisti?
Kada gali prireikti megos? pvz jei visgi noreciau kazkoki led cube’a pasidaryti tai kokio dydzio pavyktu? Dar nelabai gaudausi kaip ledu kiekis priklauso nuo i/o jungciu…
Aciu.
Autoriui linkiu sekmes ir labai kvieciu daugiau eksperimentuoti ir daugiau rasyti. Labai faina kai matai sava kalba kazka rimtesnio sioj srityje!
Čia šiek tiek per daug rašyti kaip komentarą. Šiuo klausimu parašysiu atskirą įrašą greitu laiku.
Mega ir Duemilanove pagrindinis skirtumas yra I/O skaičius, tad pabandymui/pradedančiajam Duemilanove tikrai per akis. Jei sugalvosi žaisti su LED matricom ar kūbais net ir megoj pritrūksi išėjimų, šitam reikalui minimizuoti išėjimus yra naudojami postūmio registrai (shift registers).
Trumpai tiek.
Na va, Tomas kaip ir išdėstė visą esmę :)
Atgalinis pranešimas: Arduino | daikciukai.lt
Atgalinis pranešimas: arvydas.net » Blog Archive » Arduino MEGA ir LCD ekranas
kamtie zaidimai? kvalifikacijai pakelti?
Kam šitas klausimas? Tuščią komentarų dėžutę užpildyti?
O jeigu rimtai tai vieniems patinka laisvalaikiu piešti, kitiems dainuoti, o man knistis su mikrokontroleriais. Tai yra vadinama hobiu.
susilitatavau pac:
http://arduino.cc/en/Main/Ardu.....ngleSided3
ir tai pirmas meginimas su mikro valdikliais.
bootloader isikeliau per ISP su PonyProg.
tik va klausimu daugiau nei atsakymu.
ka galima gero nuveikti su COM jungtimi ?
Atgalinis pranešimas: Arduino pradžia | Lauryno tinklaraštis