Developer blog (all entries)

Az elektronikás projektek most jegelve vannak az egyetemi félév idejére, de az egyetem kapcsán is jó sok érdekes feladat van. Köztük a robotika szakirány a 3 féléves projektmunkájával, melynek során egy olyan szoftvert készítünk, amely képest egy Kinect szenzor jeleivel feltérképezni a környezetét és ebben útvonalat keresni. Ez egyelőre erősen alfában van, úgyhogy erről konkrétabbat majd csak később.

Ami viszont egybevág a hobbiprojektjeimmel: a következő nagyobb videojáték munkámat mindenképp voxel alapokra akarom helyezni, és ezt csak elősegíti az, hogy a robot projekt is voxeleket használ, és a GPU Programozás tárgy keretein belül is voxel render-t írok CUDA-ra. Mire oda jutok hogy a játékot elkezdjem, már lesz konkrét elképzelésem róla, hogy mit hogyan érdemes.

Két vizsga közti pihenő alatt elkészült a második felvonás a LED-sor projektből. Most a változó feszültségszint helyett szabályozott kitöltési tényezőjű négyszögjellel hajtom meg (Pulse Width Modulation), pont ahogyan a LED-sor eredeti vezérlőjében is volt. Ezzel nagyon szép lineáris áttünést sikerült elérni, és nincs az a probléma, hogy a LED-ek nem egyformán világítanak, vagy hogy túlzottan melegszik a tranzisztor.

Ehhez első lépésben kell egy 8 bites shift regiszter + latch, a Raspberry Pi ebbe írja be az új értékeket, aztán kell még egy latch, amire mindjárt kitérek, hogy miért. Ebből lesz az első 8 bites számérték, ezt nevezzük el A-nak.

A másik oldalon egy 8 bites számláló van, aminél egy teljes ciklus, hogy nullától 255-ig elszámol körülbelül 4,096 ms. Minden ciklus végén a 9. helyiértékkel reseteli saját magát és aktiválja az A-nak a második latch-ét, hogy a Raspberry által beírt új érték ne a ciklus közepén lépjen érvénybe, hanem csak a ciklusok között. A számlálóban keletkező 8 bitet nevezzük el B-nek.

Az egész szerkezet közepén egy 8 bites összehasonlító IC van, ami ha A < B, magas jelet ad, különben pedig alacsonyat, és ez a jel vezérli a LED-sort.

Következő lépés: megcsinálni mind a három színre, és rendes panelra összeforrasztani.

Elkészült a végleges verziója a Nagy Piros Gombnak: bekötöttem az eddig csupán dekoratív szerepet betöltő élesítés-jelző LED-et. Az eredeti tervvel ellentétben végül úgy döntöttem, hogy mégsem fog folyamatos jelleggel jelezni, mivel bizonyos esetekben zavaró is lehet, hogy villog, ezért a Caps Lock LED-jére kötöttem rá, hogy azzal lehessen kapcsolni.

A végső kapcsolás az alábbi:

A villogást egy CD4060-as IC vezérli, ami egy 14 fokozatú frekvenciaosztó, beépített oszcillátorral. Ebből az első négy osztást egy 4db NPN tranzisztorból épített ÉS-kapura kötöttem rá, ezek kapcsolják a LED-et, a billentyűzet LED kimenete pedig az IC reset lábát vezérli.

hun Nagy Piros Gomb™

December 24, 2014,Hardware

Elkészült a legújabb kreációm, a Nagy Piros Gomb. :D Az ide posztolt munkáim közül ez most kakukktojás, mert ebbe semmi saját fejlesztés nincs, csak össze van rakva kész elemekből. Az ötlet onnan jött, hogy mindig is akartam egy nagy piros gombot, mert az olyan menő. Gomba formájú gomb lett volna a legjobb, mint amivel a rakétákat lövik ki, de olyat csak nagyon ipari árkategóriában találtam, meg most a célnak ez is megfelelet.

Ebben a megvalósításban egy régi billentyűzetet szedtem szét, és azt építettem bele, úgyhogy a dobozból egyetlen egy USB kábel jön ki. A nagy gomb a [Space] vagy a [Pause] gombot nyomja, hogy melyiket, azt a baloldalán lévő kapcsolóval lehet kiválasztani. A [Space] gomb pl. prezentációkhoz jó, a [Pause]-ra pedig bármit ki lehet osztani, mivel egy program se használja. Közös mozizások elengedhetetlen kelléke pl. a sitcom nevetés vagy Wilhelm Scream generátor, de akár beprogramozható party-indító gombnak, ami a világítástechnikát vezérli. A lehetőségeknek csak a képzelet szab határt, ez az eszköz viszont minden esetben teljesen univerzális.

A fizikai összeállítást az alábbi ábra szemlélteti:

Felül bejön az USB kábel, a billentyűzet elektronikájáról a két gombnak a vezetékei rámennek a baloldali kapcsolóra, ami eldönti, hogy abból melyik párost kapcsolja a nagygomb (jobboldalt). A nagygomb világítása pedig rá van kötve a Scroll Lock LED-re, ami szintén egy olyan dolog, aminek a kapcsolása nem befolyásol semmit, így büntetlenül kapcsolgatható. A bekapcsolást jelző LED-et egyelőre nem kötöttem be, annak kell majd még egy elektronikát csinálni, amitől kb. 5-10 másodpercenként felvillan egy pillanatra, ezzel mintegy látszatát keltené annak, mintha valami komoly masinériáról lenne szó.

Most pedig egy kis szemléltetés:

(A videón felhasznált szoftver a Vasparittya, amit innen letölthetsz ingyen)

Most pedig valami extrémebb :D (a videón nem én nevetek eszelősen, ez egy mém :D én egyelőre maradok a néma protagonista szerepében)

Elkészült az első iteráció a ledes projektemből. A cél az, hogy majd zenére menjen, de most elsőre az is épp elég áttörés, hogy világít. :D Egyelőre Raspberry Pi-ról megy, és azt vezérlem WiFi-n keresztül a PC-ről, de később tervezem, hogy veszek egy Arduino-t és arra írom át. Venném már most is, csak a Pi most úgyis kell az egyetemi projektmunkához, az meg nem, úgyhogy majd csak később kezdek el vele foglalkozni. Addig is van még mit tökéletesíteni, a videón talán látszik, hogy a fényáttűnés nem éppen lineáris, momentán egyetlen tranzisztor szabályozza az egész ledsort, persze színenként. Következő update-ben lesz már piros szín is.

Egyetemi projektmunka keretein belül belekezdtem a Raspberry Pi világánk felfedezésébe. A végeredmény az majd képfeldolgozás lesz, de addig is fel kell térképezni a GPIO-k adta lehetőségeket is. Aztán ez egyből vonzza magával a Python nyelvet is, amit még meg kell tanulnom.

A videón ami látható: egy Python script ami kezeli a fizikai gomb megnyomását, erre egy LED villog és a hangkimeneten lejátszik egy hangeffektet, amihez még külön egy erősítő van megvalósítva a próbapanelon. A script eközben a háttérben egy fájlba ki is menti a programindítás és a gombnyomások időpontjait.

Sajnos a Raspberry hangkimenetének a minősége nem a legjobb, ez hallatszik a videón is. Ez nem az erősítőm hibája, utánaolvastam, ez ilyen. Ha nagyon kritikus lenne hogy jó hangot produkáljon, akkor lehet kapni hozzá USB-s vagy a GPIO-ra köthető hangkártyát.

Még 2011 őszében kezdtem el foglalkozni az Unreal Development Kit-tel, aztán ehelyett kezdtem bele a Codename Z fejlesztésébe. Alapvetően az nem tetszett benne, hogy túlzottan egy adott feladatra van kiélezve, és az én egyéni igényeimre nehéz lett volna átprogramozni (ugye a bontható voxel pálya, plusz itt erősen limitált a felhasználható dinamikus fények száma is), meg hát ilyen erős motor mellé ütős grafika is járna, én meg nem vagyok grafikus. Pixelgrafikával még el-el vagyok, de inkább maradok elsősorban a programozásnál.

Mindettől függetlenül azért végigmentem anno egy videó kurzuson, amiben az UDK alapjait elsajátítottam és összedobtam a teszt pályák mellett egy olyat is, amiben van feladat, illetve van eleje és vége. Hogy ne vesszen teljesen kárba a vele töltött idő, ez most összeraktam egy videóba. (a hóesésre vagyok külön büszke, mert az nem preset cucc :P)

Miután sok évnyi keresés után végre találtam egy programot, amivel szoftver-renderelt játékból is tudok 30fps-el videót felvenni, végre elkészülhetett életem első Gameplay Trailer-e! Az első szerencsés játék a „Codename Z: Alpha Labs Sector A” lett. A jelenlegi palettáról még talán az „Incomplete Operation”-nek csinálok majd egyet, a többihez nem érdemes, viszont jönnek majd az új játékok, amik sokkal háromdésebbek lesznek mint eddig bármi. ;)

A trailer a játékkal együtt az alábbi linken megtekinthető:
http://vbstudio.hu/games/codenamez-alpha_labs_sector_a