Puslapiai

2012 m. gegužės 14 d., pirmadienis

Arduino Firmata - uždegam lemputę per kompiuterį

Gal kartais kažkas bandė naudotis Arduino Firmata biblioteka, bet per processing programą meta klaidą dėl:
import cc.arduino.*;


Tai viena dažnesnių pradedančiųjų problemų. Bet kas gi čia įvyko ir kodėl metą klaidą? Tai reiškia, kad Processing programa neranda Arduino Firmata bibliotekos, todėl reikės instaliuoti. Kaip tai padaryti rasite ir pačią biblioteką rasite čia: http://www.arduino.cc/playground/Interfacing/Processing, o tinginiams trumpas aprašymas lietuviškai.

Lietuviškai:

  1. Pirmiausia parsisiunčiame pačią biblioteką. Arduino UNO biblioteka - processing-arduino.zip ir Arduino Mega biblioteka - processing-arduinomega.zip .
  2. Išarchyvuojame.
  3. Atsidarome savo Processing programos "Sketchbook>libraries". Jei nežinote kur randasi, tai pasitikriname per Processing programos preferences. Jei toje direktorijoje nėra "libraries" direktorijos, tai sukuriame ir perkeliame išarchyvuotą "arduino" direktoriją.
  4. Atsidarome Arduino programoje esantį pavyzdį "File>Examples>Firmata>StardardFirmata" ir įkeliame į Arduino.
  5. Atsidarome Processing programą. Pasirenkame "File>Examples..." ir susirandame "Contributed Libraries>arduino". Čia atidarome "arduino_output" pavyzdį ir paleidžiame jį.
  6. Belieka paspausti ant pin, prie kurio prijungtas LED ir jis užsidegs, o paspaudus dar kartą - užges. Kadangi naudoju Arduino UNO, tai jis turi integruotą LED ant 13 pin, tai belieka paspausti ant pirmo iš kairės pusės kvadratuko, kad uždegti integruotą LED.

Arduino UNO įjungtas pin13 į HIGH, o to rezultatas integruoto LED užsidegimas.

Štai ir viskas - processing programa paruošta darbui su Arduino Firmata bibliotekomis.

9 komentarai:

  1. O galima kažkaip pwm kontroliuoti per šią programėlę ?
    (Taip, žinau, per processing galima, tačiau noriu paklausti ar galima būtent per šį kodą? )

    AtsakytiPanaikinti
  2. Ta prasme PWM reguliuoti?
    Visi PWM gali būti naudojami, kaip HIGH arba LOW, kaip ir skaitmeninės jungtys.
    PWM žodelis šalia jungties reiškia, kad gali būti naudojamas, kaip analoginė jungtis, kurios reikšmė nuo 0 iki 255 (0=0V; 255=5V).

    Atsimeni straipsnį apie RGB lemputės kalibravimą? Tai va, ten reguliuojamos analoginės reikšmės kiekvienos spalvos atskirai, tai realiai trys PWM lizdai yra valdomi. :)

    O gryštant prie šio straipsnio, tai turėjai pastebėti šalia arduino_output pavyzdžio buvo arduino_pwm. Per jį valdysi analoginio pin reikšmes pin 9 ir pin 11. Peržiūrėk to failo šias eilutes:
    arduino.analogWrite(9, constrain(mouseX / 2, 0, 255));
    arduino.analogWrite(11, constrain(255 - mouseX / 2, 0, 255));

    Gali prijungti prie tų pin po LED, o tada tą patį išbandyti su programa kurią aprašiau šiam straipsnį. Suprasi skirtumą iškart.. Tas žodis PWM tik nusako, kad pin gali naudoti, kaip analoginę jungtį, bet niekas nedraudžia naudoti, kaip skaitmeninę.

    Beja, ten kai klausei kažkada ar apsimoko prisipirkti mikrokontrolerių.. Na, šiaip jei nori gali nusipirkti vieną kokį atmega328 ir pasidaryti "arduino on breadboard" arba paperduino. Bet pirk iškart su arduino bootloaderiu, nes tikiu, kad tikrai nepatiks instaliuoti bootloaderį pačiam be programerio. :)
    Aš ir galvoju gal kada reiks pasidaryti ant breadboardo.. Lyg ir beveik viską turiu ko reikia, bet vis nesusiruošiu.. :)
    Galvojau šį savaitgalį padarysiu ir parašysiu, bet taip ir nesusiruošiau, tai užtat dabar atrašau.. :)

    p.s. jau turi arduino? ;)

    AtsakytiPanaikinti
  3. Ačiū už info ;)
    Na lyg man neatrodė labai sunku į tuos chipus booloaderius surašyti, kai visokius tutorial'us žiūrinėjau. Manau sugebėčiau su pačiu Arduino įrašyti.
    O pwm nėra tiesiog kai būna ne tiesioginė srovė, bet tam tikrą dažnį paduoda? nes iki dabar tai taip visad galvojau. Nu pvz jei mažesnis dažnis - lemputė blankiau degs, nes tiesiog srovę padavinės pulsais, siūlelis po biškį "Įkaitinės", bet žmogaus akis matys kad tiesiog lemputė silpniau dega (LEDai tuo principu todėl irgi veikia, nes jie nejaučia skirtumo ar mažesnė, ar aukštesnė kažkokio dažnio įtampa, todėl ir galima naudoti PWM kaip analog out, ar aš klystu ? ). O arduino dar neturiu, bet treniuojuosi - pasižaidžiu tai su simulatoriais įvairiais, tai su processing paeksperimentuoju :)

    P.s. nesu apie techniką visiškai neraukiantis žmogus, gali man terminų ir neaiškinti ;)

    AtsakytiPanaikinti
  4. Taip, srovę padavinėja pulsais.

    http://arduino.cc/it/Tutorial/PWM
    http://cl.ly/1E2h3B0o3M1E25223p2o

    AtsakytiPanaikinti
  5. Dėl mikrokontrolerio ir bootloaderio, tai kainos nelabai skiriasi su bootloaderiu ar be jo.. ;)
    O patariau imti kokį atmega328, nes tikiu, kad kai padarysi iki galo kokį įrenginį kurį norėsi naudoti, tai tingėsis atjunginėti ir bandyti kažką visiškai naujo, todėl visai nieko pasidaryti kokį paperduino ar panašiai.. Na, aišku galima pasidaryti kokią DC varikliukų schemą, kaip shield'ą, kad užtektų užmauti ant arduino..

    AtsakytiPanaikinti
  6. Na aš šiaip nemanau kad greitu metu pirksiu kažką, nes gaila, bet neturiu paypal (žadu vasarą susikurti, o aš nepilnametis, bet kad galėtum apmokėjimus daryti reikia turėti kreditinę. Mačiau Zoom'as turi kažkokių gerų pasiūlymų, gal pasinaudosiu), o ebayjuje kitaip neišsiversi...
    Tad galbūt patartum kur breadbordų kaune būtų galima įsigyti, aišku kad nepermokėti, nes manau 20lt maks breadbordui skirčiau ?

    AtsakytiPanaikinti
  7. Aš už 17,5Lt pirkau iš Evita. Kaune yra parduotuvė.. :)

    http://www.evita.lt/?pid=catalogue&action=search&keyword=maketavimo&submit=Ieškoti

    Žiūrint ką pirkti ruošiesi per ebay, šiaip daug kas panašiom kainom Lietuvoje ir nereikia laukti.. Jei iš Europos, tai max 2sav., o jei iš Kinijos, tai gali užtrukti ir 1-2 mėn.. Čia kaip kartais, kartą iš kinijos siuntė 1.5mėn, o kartą apie 12d. Ten kaip suprantu gali užstrigti muitinėje. Va, dabar laukiu iš kinijos LCD ekraniuko.. Tai jau 10d. praėjo tikrai.. :)

    AtsakytiPanaikinti
  8. Ačiū, gal kažkada reikės atsidurt toj evitoj ir prigriebti tą breadbord'ą :)
    Sėkmės su LCD ;) (Beje, kokį pirkai, tekstinį ar paprastą?)

    AtsakytiPanaikinti
  9. Už pora svarų su atsiuntimu HD44780 - http://www.ebay.co.uk/itm/New-Character-LCD-Module-Display-LCM-1602-16X2-HD44780-Blue-Blacklight-/300611645704?pt=UK_Computing_Other_Computing_Networking :)
    Pasibandymams bus.. Realiai nesiruošiu kažkur labai naudoti.. :)

    AtsakytiPanaikinti