LED Kocka 3x3x3
Elküldve: 2012.11.28. 02:05
Sziasztok!
A múlt héten hobbiból építettem egy 3x3x3-as azaz 27 ledből álló LED kockát.
Elég kicsi, de ez amolyan "EXPERIMENTAL" verzió, csak az ízéért...
(Próbanyák, sok átkötés minden ami ezzel jár...)
Ennek alapján már tervben van egy 5x5x5-ös kocka ami már jóval szebb.
Szóóóóval, ezt a topicot azért nyitottam, hogy bemutassam nektek az elvet, illetve a kész művemet.
Elöljáróban annyit, hogy mind a kapcsolás, mind pedig a számítógépes vezérlő, illetve animáció készítő program
illetve a számítógép és a vezérlő közötti soros kapcsolat adatfolyama is saját tervezés.
(Ha valahol máshol ezek a módszerek fellelhetők csupán a véletlen műve.)
Kezdjük is az elején:
LED kocka "anatómia":
Aki ismeri a LED kocka működési elvét az ugorhat a következő részhez.
A LED kocka vezérlésekor egyszerre mindig csak 1 LED világít a kockában, egy komplett kép/animáció kirajzolásában olyan gyorsan váltakoznak a LED-ek, hogy a szemünk becsap minket és mindegyik LED-et világítani látjuk. Felépítésében annyi a lényeges, hogy ennél a kockánál 3 szint van kialakítva, mindegyik szinten 9 LED. Vagyis a teljes kockát felbonthatjuk 3 szintre és 9 oszlopra, vagyis 1 oszlopban 3 LED található. Ezeket a szinteket és oszlopokat fogjuk veszettül gyorsan kapcsolgatni.
És most folytassuk is tovább a lényegesekkel.
Vezérlő:
(Bocs a rossz minőségért... )
Mint már az előbb említettem próbanyákra épült a vezérlő.
Ami megtalálható rajta:
Működése:
Az ATmega8 soros kommunikációval kapcsolódik a számítógépre. A kommunikáció során teljes bájtokat küld a számítógép a vezérlőnek,
vagyis egy "ütemben" 8 bitet. Egy led világítását 1 bájt tárolja, vagy a pozícióját tárolja ha jobban tetszik. Tehát a teljes kocka vezérléséhez összesen 27 bájt kell. Ezzel a 27 bájtnyi adatt kitudunk rajzoltatni egy állóképet. Egy animációhoz összesen (képkocka*27) bájt szükséges.
A jó bájt-kihasználás végett a 8 bit szét lett "vágva" alsó és felső 4 bitre. A felső 4 bit tárolja a LED szintjét (1-2-3), az alsó pedig,
hogy hanyadik oszlopban van a LED (1-9). A kapott bájtot az ATmega8 szétcincálja és kiszedi magának a fontos adatokat.
A vezérlő úgy lett tervezve, hogy erősen függ a számítógépes kapcsolattól, vagyis számítógép és a saját vezérlőprogramja nélkül képtelen
működni. Összesen csak 27 bájtot tárol az általam írt ATmega8 firmware, vagyis csak egy állóképet. A számítógép ezeket az állóképeket löki
a vezérlőnek egymás után. Azért döntöttem így mert egyszerűbb volt így megírni a vezérlést.
A szinteket kapcsoló tranzisztorokat közvetlen vezérlem a ATmega8 lábairól, az oszlopokat viszont már a 4-16os dekóderrel vezérlem, mivel
a dekóder nélkül 9 lábat kellene használni az ATmegáról, így a dekóderrel viszont elég csak 4 láb, és még így is vannak kihasználatlan lában a dekóderen. 12 láb helyett így elég csak 7. Ez igen nagy kincs egy mikroprocesszornál. (a dekóder 4 bites bemeneti bináris számból dekódol egy decimálisat, vagyis a decimális számhoz tartozó lábat kapcsolja be mindig, azaz mindig csak 1 láb aktív.) A dekóder kimenetei kapcsolják az oszlopok tranzisztorait. A vezérlő közepén található egy gomb, ez az ATmega8 reset gombja ha netalán néha becsokizik a rendszer, mellette balra pedig az ATmega8 programozó csatlakozója. Alul pedig a zöld-piros led kombó a soros-USB átalakító, mivel laptopon nincs soros port.
Nagyjából ennyit a vezérlőről.
A számítógépes vezérlő/tervező:
A vezérlőprogram 4 napi masszív szoftverfejlesztés eredménye.
Bal oldalon lehet elkészíteni a képkockát, a fenti választógombokkal lehet kiválasztani, hogy melyik rétegen szeretnénk
dolgozni. Miután kiválasztottuk a 9 kör szimbolizálja a 9 LED-et a szinten, amire kattintva a LED világítását idézhetjük elő.
Amint mind a 3 szinten kész vagyunk a bejelölgetéssel a SAVE FRAME gombbal elmenthetjük a képkockát. Amit a listában láthatunk, megjelenik
a 2 oszlop, a LAYERID a szint szám, és a LEDID a LED száma. Az elmentett képkockák után a jobb oldali csúszkával beállíthatjuk, hogy
mennyi idő teljen el a 2 képkocka között, ezzel szabályozva az animáció sebességét, ezek utána SEND TO CUBE gombbal küldhetjük is az animációt a kockára. A bal oldalon a képkocka tervezőnél található egy REAL TIME kiválasztható box, ami ha be van kapcsolva, akkor tervezés közben már rögtön a kockán láthatjuk az eredményt, így könnyebb a tervezés.
Jobb fent a kommunikációs port és a port sebesség állítható és itt lehet kapcsolódni a vezérlőhöz.
Alatta a SAVE FRAME és LOAD FRAME gombokkal lehet menteni és betölteni az animációkat így ha készítettünk egy jó animációt, elmenthetjük egy fájlba így nem veszik el.
Ennyit a vezérlő szoftverről nagyvonalakban.
A LED kocka:
Ehhez különösebben nem fűznék kommentárt, az interneten sok leírást lehet találni, hogy hogyan kell összeállítani.
9 lyukat kell fúrni egy sablonra és abban összeforrasztani a szinteket. A szintek negatív feszültséget kapnak, az oszlopok pozitívat.
A vezérlő és a kocka között számítógépes szalagkábellel van megoldva a kapcsolat.
És a legizgalmasabb, működés közben.
Videó:
Szintén rossz minőségű, sajnos nincs megfelelő célszerszámom.
LED kocka 3x3x3
Köszi a figyelmet!
A múlt héten hobbiból építettem egy 3x3x3-as azaz 27 ledből álló LED kockát.
Elég kicsi, de ez amolyan "EXPERIMENTAL" verzió, csak az ízéért...
(Próbanyák, sok átkötés minden ami ezzel jár...)
Ennek alapján már tervben van egy 5x5x5-ös kocka ami már jóval szebb.
Szóóóóval, ezt a topicot azért nyitottam, hogy bemutassam nektek az elvet, illetve a kész művemet.
Elöljáróban annyit, hogy mind a kapcsolás, mind pedig a számítógépes vezérlő, illetve animáció készítő program
illetve a számítógép és a vezérlő közötti soros kapcsolat adatfolyama is saját tervezés.
(Ha valahol máshol ezek a módszerek fellelhetők csupán a véletlen műve.)
Kezdjük is az elején:
LED kocka "anatómia":
Aki ismeri a LED kocka működési elvét az ugorhat a következő részhez.
A LED kocka vezérlésekor egyszerre mindig csak 1 LED világít a kockában, egy komplett kép/animáció kirajzolásában olyan gyorsan váltakoznak a LED-ek, hogy a szemünk becsap minket és mindegyik LED-et világítani látjuk. Felépítésében annyi a lényeges, hogy ennél a kockánál 3 szint van kialakítva, mindegyik szinten 9 LED. Vagyis a teljes kockát felbonthatjuk 3 szintre és 9 oszlopra, vagyis 1 oszlopban 3 LED található. Ezeket a szinteket és oszlopokat fogjuk veszettül gyorsan kapcsolgatni.
És most folytassuk is tovább a lényegesekkel.
Vezérlő:
(Bocs a rossz minőségért... )
Mint már az előbb említettem próbanyákra épült a vezérlő.
Ami megtalálható rajta:
- 3db BC182 - a szinteket kapcsolni
- 9db BC556 - a 9 oszlop kapcsolására
- 74LS154 - 4-ből 16 dekóder. (4 bites bináris bemenetet dekódol decimálisra.) Ez kapcsolja a az oszlop tranzisztorokat
- ATmega8 - ez a lelke az egésznek, megvalósítja az adatkommunikációt a géppel, és vezérli a ledeket
- és egy marék ellenállás
Működése:
Az ATmega8 soros kommunikációval kapcsolódik a számítógépre. A kommunikáció során teljes bájtokat küld a számítógép a vezérlőnek,
vagyis egy "ütemben" 8 bitet. Egy led világítását 1 bájt tárolja, vagy a pozícióját tárolja ha jobban tetszik. Tehát a teljes kocka vezérléséhez összesen 27 bájt kell. Ezzel a 27 bájtnyi adatt kitudunk rajzoltatni egy állóképet. Egy animációhoz összesen (képkocka*27) bájt szükséges.
A jó bájt-kihasználás végett a 8 bit szét lett "vágva" alsó és felső 4 bitre. A felső 4 bit tárolja a LED szintjét (1-2-3), az alsó pedig,
hogy hanyadik oszlopban van a LED (1-9). A kapott bájtot az ATmega8 szétcincálja és kiszedi magának a fontos adatokat.
A vezérlő úgy lett tervezve, hogy erősen függ a számítógépes kapcsolattól, vagyis számítógép és a saját vezérlőprogramja nélkül képtelen
működni. Összesen csak 27 bájtot tárol az általam írt ATmega8 firmware, vagyis csak egy állóképet. A számítógép ezeket az állóképeket löki
a vezérlőnek egymás után. Azért döntöttem így mert egyszerűbb volt így megírni a vezérlést.
A szinteket kapcsoló tranzisztorokat közvetlen vezérlem a ATmega8 lábairól, az oszlopokat viszont már a 4-16os dekóderrel vezérlem, mivel
a dekóder nélkül 9 lábat kellene használni az ATmegáról, így a dekóderrel viszont elég csak 4 láb, és még így is vannak kihasználatlan lában a dekóderen. 12 láb helyett így elég csak 7. Ez igen nagy kincs egy mikroprocesszornál. (a dekóder 4 bites bemeneti bináris számból dekódol egy decimálisat, vagyis a decimális számhoz tartozó lábat kapcsolja be mindig, azaz mindig csak 1 láb aktív.) A dekóder kimenetei kapcsolják az oszlopok tranzisztorait. A vezérlő közepén található egy gomb, ez az ATmega8 reset gombja ha netalán néha becsokizik a rendszer, mellette balra pedig az ATmega8 programozó csatlakozója. Alul pedig a zöld-piros led kombó a soros-USB átalakító, mivel laptopon nincs soros port.
Nagyjából ennyit a vezérlőről.
A számítógépes vezérlő/tervező:
A vezérlőprogram 4 napi masszív szoftverfejlesztés eredménye.
Bal oldalon lehet elkészíteni a képkockát, a fenti választógombokkal lehet kiválasztani, hogy melyik rétegen szeretnénk
dolgozni. Miután kiválasztottuk a 9 kör szimbolizálja a 9 LED-et a szinten, amire kattintva a LED világítását idézhetjük elő.
Amint mind a 3 szinten kész vagyunk a bejelölgetéssel a SAVE FRAME gombbal elmenthetjük a képkockát. Amit a listában láthatunk, megjelenik
a 2 oszlop, a LAYERID a szint szám, és a LEDID a LED száma. Az elmentett képkockák után a jobb oldali csúszkával beállíthatjuk, hogy
mennyi idő teljen el a 2 képkocka között, ezzel szabályozva az animáció sebességét, ezek utána SEND TO CUBE gombbal küldhetjük is az animációt a kockára. A bal oldalon a képkocka tervezőnél található egy REAL TIME kiválasztható box, ami ha be van kapcsolva, akkor tervezés közben már rögtön a kockán láthatjuk az eredményt, így könnyebb a tervezés.
Jobb fent a kommunikációs port és a port sebesség állítható és itt lehet kapcsolódni a vezérlőhöz.
Alatta a SAVE FRAME és LOAD FRAME gombokkal lehet menteni és betölteni az animációkat így ha készítettünk egy jó animációt, elmenthetjük egy fájlba így nem veszik el.
Ennyit a vezérlő szoftverről nagyvonalakban.
A LED kocka:
Ehhez különösebben nem fűznék kommentárt, az interneten sok leírást lehet találni, hogy hogyan kell összeállítani.
9 lyukat kell fúrni egy sablonra és abban összeforrasztani a szinteket. A szintek negatív feszültséget kapnak, az oszlopok pozitívat.
A vezérlő és a kocka között számítógépes szalagkábellel van megoldva a kapcsolat.
És a legizgalmasabb, működés közben.
Videó:
Szintén rossz minőségű, sajnos nincs megfelelő célszerszámom.
LED kocka 3x3x3
Köszi a figyelmet!