2011-12-27

Mikrokontrolerių programavimas


Mikrokontroleriai – viena iš plačiausiai ir labiausiai tobulinamų „advanced“ elektronikos sričių. Kai diskretiniais elementais sudėtinga realizuoti reikiamas sistemos funkcijas – pereinama būtent prie jų. Kam konstruoti dvejetainį skaičių sumatorių, daugybos įrenginį ar pan. iš šimtų diskretinių komponentų (tokių entuziastų vis dar atsiranda), jei tą patį gali atlikti nesudėtingas 8/16/32-bitų mini procesorius, be to sutaupoma vietos? Ne paslaptis, kad lanksčios, didelės ar sudėtingos sistemos nebeapsieina be šių mini procesorių. Pažvelkime į juos iš arčiau bei susipažinkime su vienos iš geriausiai žinomos kompanijos "Atmel" ATmega mikrokontrolerio programavimu.

2011-11-14

Garso lygio indikatorius/ VU meter


Kai nusibosta kiekvienos dienos monotonija ir yra šiek tiek laiko, reiškia metas paeksperimentuoti. Šįkart nutariau pagilinti elektronikos žinias ir sukonstruoti ką nors veikiančio, be to reikia papildyti hardware skiltį, kadangi ji vis dar tuščia. Idėjų visada yra, tačiau kažką daryti nuo 0 iki galutinio daikto elektronikos mėgėjui yra ypač sudėtinga, geriau remtis pavyzdžiais. Laimei yra tokios svetainės kaip elektronika.lt, kurios rašo ne tik naujausią informaciją apie IT įvykius, bet svarbiausia - apie elektroniką. Schemų skiltyje kiekvienas ras sau įdomių dalykų paeksperimentavimui. Aš taip pat išsirinkau ir nusprendžiau pasigaminti paprastą garso lygio indikatorių - VU meter. Kaip man sekėsi ir kas iš to gavosi – viskas aprašyta toliau.

2011-10-23

Web programavimo technologijos


                Web jau daugeliui nebe naujiena ir kiekvienas daug maž bent kažką yra girdėjęs apie stebuklingą žodį “internetas” arba tokių, kurie dar nieko apie tai negirdėjo – darosi mažuma(pvz. gentys Afrikoje). Interneto svetainės, portalai, blogai, soc.tinklai etc. kasdien pateikia daugybę informacijos, dar daugiau šiukšlių. Technologijų leidžiančių internete „suktis“ informaciniams ir kitokiems Web puslapiams yra daugybė. Nusprendžiau, jog laikas pakalbėti ir padaryti trumpą intro apie plačiausiai paplitusias, geriausiai žinomas priemones Web puslapiams kurti. Niekam ne paslaptis, jog dinaminis šiandienos puslapių turinys kaip tik ir generuojamas šiomis priemonėmis. Manau, kiekvienam, kartais besidominčiam Web programavimu (ypač dirbantiems toje srityje), būtų puiku išmanyti ar bent pačiupinėti daugelį šių technologijų, praplėsti akiratį ir pažiūrėti į tą patį dalyką iš skirtingos perspektyvos. Trumpai susipažinsime su alternatyviomis PHP, ASP .NET, Java JSP, Python technologijomis Web puslapių programavimui. Toliau tikiuosi, jog šio straipsnelio skaitytojas yra susipažinęs bent su HTML ir puslapių kūrimu. Jei ne, nebėda – pagrindų visada galima išmokti www.w3schools.com.

2011-09-10

Spyruoklių ir virvių fizika(spring/rope-physics)


                Praeitą kartą panagrinėjome paprasčiausią kietų kūnų fizikos simuliacijos metodą, kai bandėme parašyti lengvasvorį fizikos varikliuką. Šįkart pritaikant tuos pačius principus ir nieko daug nekeičiant pridėsime dar papildomo interaktyvumo mūsų kurtai simuliacijai naudojant – spyruokles(spring physics). Šiame straipsnelyje pagvildensime kaip praktiškai pasinaudoti Huko dėsniu(Hooke‘s Law) kuriant akiai patrauklius efektus. Spyruoklės galima dažnai sutikti ten, kur net galbūt neįsivaizduojate joms esant, pavyzdžiui – virvių ir drabužių simuliacijai, minkštiems kūnams(soft-bodies) – žėlė ir pan. Taip pat naudojant tas pačias spyruokles galima spręsti tą pačią kolizijų atsako problemą(collision response). Ilgą laiką spyruoklės ir minkštų kūnų simuliacija buvo naudojama labai saikingai dėl per mažų skaičiavimo pajėgumų, o šiandien – vis dažniau pastebimos žaidimuose ir demonstracijose. Na, mažiau kalbų – daugiau darbų, bandom pasigilinti.

2011-08-14

Kieto kūno(rigid-body) fizikos pagrindai


  Didžioji dalis šiandienos žaidimų ir įvairių simuliatorių neapsieina be fizikos „efektų“. Kai dar 1998m. pasirodė Half-life pirmoji dalis, Quake 3 ir kiti gerai žinomi kultiniai žaidimai apie pilnavertę fizikos simuliaciją galima buvo tik pasvajoti. Tuomet fizikos skaičiavimai buvo naudojami tik būtiniausiose žaidimų vietose – žaidėjų-scenos kolizijų aptikimui-atsakui(collision detection & response), protagonistų judėjimui ir dalelių sistemų simuliacijai(particle physics). Procesorių CPU ir GPU pajėgumams padidėjus su trenksmu ir tam tikra egzotika tokie kūrėjai kaip Havok, Ageia Novodex(dabartinė Nvidia PhysX) pradėjo plėtoti pilnavertes simuliacijos sistemas ir siūlyti savo programinės įrangos plėtotės įrankius(software development kit – SDK) fizikinių sistemų integracijai į kitas programas. Viena iš pirmųjų Havok fizikos sistema sėkmingai buvo panaudota Valve žaidime „Half-life 2” ir padėjo žaidimui pasiekti aukštumas. Iš mėgėjams skirtų priemonių gerai buvo žinoma Tokamak, ODE bei Newton projektai – vis dar naudojami šiandien ir populiarūs. Taip pat atsirado atviro kodo galingų sistemų tokių kaip: Bullet Physics, kuri naudojama žaidimų, filmų pramonėje(pvz. kuriant filmą „2012”), Blender bei kituose modeliavimo ir komerciniuose paketuose kaip Softimage XSI, Cinema 4D. Dviejų dimensijų analogas - Box2D ir kt.

2011-06-08

Ogre Flow - Particle Editor

      Ogre Flow - tai mano parašytas mažas įrankis darbui palengvinti su Ogre 3D varikliuko dalelių sistemomis(particle systems). Nors Ogre variklis yra kuriamas pakankamai ilgai ir turi gausybę įskiepių ir kt., bet minimalių įrankių koreguoti dalelių skriptams(ir realiu laiku matyti rezultatus) pasigedau. Nežiūrint į tai, kad egzistuoja smarkiai išplėtotas komercinis Particle Universe redaktorius, nusprendžiau pasirašyti savo poreikius atitinkantį minimalų dalelių redaktorių Flow.
  • Daugiau apie galimybes ir pačią programą rasite čia - Flow
       Kol kas šis redaktorius yra pradinėje stadijoje, bet jau gali redaguoti praktiškai visus Ogre sistemų parametrus - to manau pilnai pakanka nesudėtingiems efektams sukurti. Priklausomai nuo naudojimo poreikių redaktorius bus plėtojamas toliau.

2011-05-28

Python pagrindai per 15 min.

    Išmokti Python programavimo kalbą ir jos svarbiausias konstrukcijas - galima labai greitai. Kalba gan paprasta, patraukli savo lankstumu, įgudę programuojai perpras be vargo, o pradedančiajam - gera alternatyva arba papildas programuoti šalia kokio Pascal ;) Šiame įrašė pateiksiu greitą pradžiamokslį šiai kalbai.

    Taigi parsisiunčiam ir įsirašom Python iš http://www.python.org/download/ (siulyčiau kol kas 2.7.x versiją, nes ji geriausiai dabar palaikoma ir pereiti prie 3.x nebus didelių problemų, jei ryžtumetės vėliau). Tad nieko nelaukdami - važiuojam!

2011-05-10

Labirintų generavimas

                Vienas gan įdomus uždavinys yra labirintų sprendimas – pradedant įėjimu pasiekti labirinto pabaigą. Kompiuteriai tai atlieka itin greitai, žmogui tektų kaip reikiant paprakaituoti, jei duotume sudėtingesnį atvejį. Labirintų sprendimui naudojamas paieškos į gylį metodas – breadth first search arba tiesiog BFS. Jei teko bent kiek domėtis, tai šis metodas veikia labai paprastai ir primena Flood fill metodą (tą patį kurį naudoja Photoshop, MS Paint, Gimp etc.) figūrų užpildymui tik šiek tiek modifikuotą. 
                Kitas uždavinys – labirintus ne spręsti, bet juos generuoti! Taip! Pasirodo, kad generuoti labirintą nėra taip paprasta, kaip gali pasirodyti. Šiame straipsniuke pabandysiu apžvelgti pamąstymus, kaip tai būtų galima atlikti ir galiausiai užbaigsime su realizacija. Jokiu būdu nesistengsiu sugalvoti kažko optimalaus ir minimalaus, o tiesiog parodyti, kad generavimo idėja irgi gali būti įdomi ir įtraukianti.

2011-04-06

Processing

               Kartais reikia labai greitai sukurti/išbandyti kokį algoritmą ar pateikti informaciją vaizdžiai ir aiškiai, todėl tenka ieškoti to, kas galėtų tokį darbą palengvinti. Naudoti įprastas programavimo kalbas ir jų galimybes galima, tačiau užtruksite gerokai ilgiau kol gausite reikiamus rezultatus. Išeitis kaip visada yra! Vienas iš tokių „darbo palengvintojų“ tai Processing IDE sistema. 

                Processing - tai Java kalba paremtas ypač greitos vizualizacijos(pabrėžiu: greitos!) įrankis, kuriuo labai paprasta naudotis. Jis skirtas duomenų atvaizdavimui ir pateikimui tiek 2D tiek ir 3D. Daugelis labiausiai reikalingų ir dažniausiai naudojamų funkcijų jau realizuota, kas iš ties paspartina procesą.