3D LED kocka vezérlése PC-vel

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: kapu48 »

Tetszik ez a kocka, ezért érdekel a téma.
Bele kellett olvasgatni, hogy ne írjak egetverő butaságot ide!

HW?
Pl.: Találtam Arduino-val megoldott vezérlést is.

PC-s programot kellene írni?
Ha indításkor nyomod a PinD.5 gombot, meghívódik az RS232 rutin.
Én úgy veszem ki az rs232 rutinból, hogy közvetlen Feltölti PC-röl a Cube Mátrix Buffert.
És ezeket az aktuális effekt értékeket előbb ki kell számítani a PC programnak, mielőtt elküldi.
Ha nincsen effect_mátrix számítás nincsen mit küldeni.

Regisztrálás?
Megtörtént.
De csak a Linuxos programot tudtam letölteni! (A Windows nem tudta értelmesen kibontani!)
Szerintem legalább a Programot tedd fel az oldaladra! (Szabadon használható, Csak az eredeti szerzőre való hivatkozást benne kel hagyni!)
(Már jártam ott, de csak a Cube 4*4*4-ről találtam ismertetést.)
:D
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: kapu48 »

Ide teszem az rs232 rutint, Gyors fordítót magyarázattal. (Bocsi, de időhiány! És a lényeg szerintem így is érthető!)

Kód: Egész kijelölése

// Take input from a computer and load it onto the cube buffer
//* bemenet Vegyünk egy számítógépet, és töltse fel a kocka puffer
void rs232(void)
{
	int tempval;
	int x = 0;
	int y = 0;
    int escape = 0;		//* réteg elválasztó Flag
	
	while (1)
	{
		// Switch state on red LED for debugging
		// Should switch state every time the code
		// is waiting for a byte to be received.
		
		//* Kapcsolja állapotot piros LED hibakereséshez 
		//* Ha váltani állapot minden alkalommal a kódot 
		//* Vár egy byte el kell juttatni.
		LED_PORT ^= LED_RED;

		// Wait until a byte has been received
		//* Várja meg, amíg a byte meg is érkezett
		while ( !(UCSRA & (1<<RXC)) );

		// Load the received byte from rs232 into a buffer.
		//* Betöltése kapott byte-ból RS232 egy puffer.
		tempval = UDR;

		// Uncommet this to echo data back to the computer
		// for debugging purposes.
		//UDR = tempval;

		// Every time the cube receives a 0xff byte,
		// it goes into sync escape mode.
		// if a 0x00 byte is then received, the x and y counters
		// are reset to 0. This way the x and y counters are
		// always the same on the computer and in the cube.
		// To send an 0xff byte, you have to send it twice!
		
		//* Minden alkalommal, amikor a kockát kap 0xff byte, 
		//* Ez megy a sync szökés mód. 
		//* Ha a 0x00 bájt ezután érkezik, az x és y számlálók 
		//* Visszaáll 0-ra. Így az x és y számlálók 
		//* Mindig ugyanazt a számítógépet, és a kocka. 
		//* Küldéséhez 0xff byte, akkor küldje el kétszer!

		// Go into sync escape mode
		//* Menj szinkronizálási szökés üzemmódba
		if (tempval == 0xff)
		{
			// Wait for the next byte
			 while ( !(UCSRA & (1<<RXC)) );
			 // Get the next byte
			 tempval = UDR;

			 // Sync signal is received.
			 // Reset x and y counters to 0.
			 //* Szinkron jelet kap.
			 //* Reset x és y számlálók 0-ra.
			 if (tempval == 0x00)
			 {
				x = 0;
				y = 0;
                escape = 1;
			 }
			 // if no 0x00 byte is received, proceed with
			 // the byte we just received.
			 //* ha nem 0x00 bájt érkezik, folytassa 
			 //* A byte amit most kapott.
		}

        if (escape == 0)
        {
		// Load data into the current position in the buffer
		//* Adatok betöltése a jelenlegi helyzetbe a bufferben
			fb[x][y] = tempval;

    		// Check if we have reached the limits of the buffer array.
			//* Ellenőrizze, hogy már elérte a határait a puffer tömb.
    		if (y == (CUBE_Y - 1))
    		{
    			if (x == (CUBE_X - 1))
    			{
    				// All data is loaded. Reset both counters
					//* Minden adat van betöltve. Állítsa vissza mindkét számlálót
    				y = 0;
    				x = 0;
                    // Copy the data onto the cube.
					//* Másolja az adatokat rá a kocka.
    				tmp2cube();
    			} else
    			{
    				// A layer is loaded, reset y and increment x.
					//* Egy réteg kerül betöltésre, reset y és a növedék x.
    				x++;
    				y = 0;
    			}
    		} else
    		{
    			// We are in the middle of loading a layer. increment y.
				//* Vagyunk a közepén réteg betöltése. növelni y.
    			y++;
    		}
	
	    } else
        {
            escape = 0;
        }
    }
}
Tehát az ISR(TIMER2_COMP_vect) megszakítás rutin, folyamatosan küldi Multiplexelve a LED kockára az adatokat.
De az animációt ilyenkor a PCn levő program számítja ki és gondoskodik a mátrix időzített frissítéséről.

Írd meg mi az, ami bővebb magyarázatot kíván? :wink:
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: kapu48 »

És az indok, amiért erre szükség van:
Idézet:
Step 41: Build the controller: RS-232
Ahhoz, hogy a valóban lenyűgöző animációk, azért csatlakoztatni kell a LED kocka a számítógéphez.
A PCn lehet lebegőpontos számításokat végezni, mert az AVR dolgozik lassan a szögfüggvényszámításokkal. Az ATmega rendelkezik egy beépített soros interfész nevű USART (Universal szinkron és aszinkron soros vevő és az adó.) Az USART kommunikál a TTL szint (0/5 volt) . A számítógép használatával RS232 soros adat küldés.
:roll:
Avatar
Mickey5
DrótVégénSzéndarab
Hozzászólások: 24
Csatlakozott: 2008. október 6. hétfő, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: Mickey5 »

kapu48 írta:És az indok, amiért erre szükség van:
Idézet:
Step 41: Build the controller: RS-232
Ahhoz, hogy a valóban lenyűgöző animációk.....
Szia!
Igazán köszönöm, hogy ennyit fáradsz velem, illetve problémámmal. Sajnos a C-forrás nekem semmit se mond. Úgy jó 20 éve tanultam C++ programozást, de sohasem használtam a gyakorlatban. Azóta még azt a kicsit is elfelejtettem.

Az Arduino-vezérlés csak egy lehetőség, engem nem érdekel. Hacsak azt nem mondja valaki, hogy ezen a módon helyettesíthető a PC-s vezérlés :) No de az Arduino is csak egy AVR, miért tudna lebegőpontos számítást?

Ha programot kell írni a PC-re, akkor szintén tárgytalan az egész, mert azt nem tudom megoldani. Köszönöm az idézeteket, de ezt eddig is tudtam. Nem akarok dicsekedni, de én azért sokkal szebben fordítok angolról, mint ezek az ostoba gyorsfordítók :D Korábban többször is írtam, hogy az angol szöveggel nincs gondom, de hiába értem, ha a tartalmat nem tudom értelmezni, mert ahhoz hiányzik a tudásom.

Továbbra is az a kérdés, hogy Christian Mohen eredeti anyagában van-e kész megoldás a PC-s vezérlésre :?:

Az idővel nekem is gondjaim vannak, de itt a hosszú hétvége, megpróbálom felrakni az anyagot saját honlapomra.

Jó pihenést mindenkinek :!:
Üdv Neked:
Mickey5
Avatar
Mickey5
DrótVégénSzéndarab
Hozzászólások: 24
Csatlakozott: 2008. október 6. hétfő, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: Mickey5 »

Még egy gondolat! A "kész megoldás"-t úgy értettem, hogy például:

ebbe a mappába tedd be ezt és ezt a programot, állítsd be a COM3-at X Baud-ra, indítsd el a PC-n az Y programot, nyomd meg a kockán a Z gombot, stb....

A C-programok elemzése, módosítása, vagy programok írása a PC-re nekem nem megy, tehát akkor el kell felejteni az egészet.
Üdv Neked:
Mickey5
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: Robert »

Kis pontosítások:
- az AVR tud lebegőpontos számítást! Csak sok utasításból hajtja végre.
- helyettesíthető a PC-s vezérlés. Külső memóriába berakod a mátrixokat és azt jeleníted meg (SD, EEPROM, Flash...)

Fontos! Az utánépítés és a fejlesztés két külön dolog. Ha utánépíteni akarsz, akkor az van amit találsz. ha fejleszteni, akkor van sok lehetőség előtted (tudás, eredmény, sikerélmény..)...
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: kapu48 »

Ha Te ennyire jól tudsz angolul, akkor ez a fordítás álljon itt azoknak, akinek erre szüksége van!
Csak akkor nem értem miért nem olvasol?
Mért várod el, hogy más olvasson helyetted?

Ott van a PC program C forráskódja az általad küldőt tömörítet állományban.
A neve: cube_pc-v0.1.tar.gz

Kibontod, berakod valami Gcc IDE fordítóba.
Lefordítod CubeMain.EXE formátumba.

Összekötöd a Soros proton a PCt – LED kockát.
Elindítod előbb a kockát rs232 üzemmódban, utána az Cube_PC.exe programodat.
És gyönyörködöl a szép szinuszos hullámokban!

Már ne haragudj, de ha te semmire nem vagy képes?
Csak várod a sült galambot akkor tényleg tárgytalan az téma!
:evil: :cry:

És nem a C programot kellett volna olvasnod csak a sorok között levő //-jelek után következő Angol magyarázó szöveget!
Mivel, mint mondtad azt jól megértenéd!
:cry:
Avatar
Mickey5
DrótVégénSzéndarab
Hozzászólások: 24
Csatlakozott: 2008. október 6. hétfő, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: Mickey5 »

Sajnálom, ha így látod (mármint hogy én csak a sült galambot várom) :( Ezek szerint valamit rettentően rosszul fogalmaztam meg.

Rögtön a témaindító hozzászólásban leírtam, hogy az AVR-es forrást sikerült lefordítani, de a PC-st nem. Ezek szerint ott is elhibáztam valamit. Mentségemre szolgáljon, hogy most először próbáltam GCC-vel fordítani. Azt sem tudom, hogy a mappában található fájlok közül melyeket (és főleg hogyan!) kell betölteni a fordításhoz.

Azt viszont látom, hogy a szerző igen alapos munkát végzett ezzel a kockával. Ezért gondoltam, hogy a PC-s vezérlésre is ad valamilyen kész megoldást, csak az én figyelmemet kerülte el.

Elnézést kérek mindenkitől, amiért fölöslegesen nyitottam egy topikot! Megpróbálom másként megoldani.

Sziasztok.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: kapu48 »

A C programok lefordítása PC.EXE formátumra?

Több oldalas téma, és már leírták sokan olyanok, akinek ez a kisujjukban van.
Ennek a magyarázásába én nem mennék bele.

Esetleg felrakod a forráskódot valahova, és hátha akad Valaki, aki LE FORDIJA neked?
Sajnos Legtöbbször bizony Hibakereséseket von maga után az ilyen fejlesztés!

Sok sikert!
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: csabeszq »

Kedves kapu48, ez így azért nagyon necces.

Mármint, hogy a .tar.gz-t kicsomagolod és PC.EXE-t csinálsz belőle.
A tar.gz a UNIX-okon használt formátum, míg az EXE Windows-os.
Ha cygwin + mingw párosítást használsz, akkor az esélye, hogy működő kódot kapj felugrik 0%-ról 1%-ra.

Az RS232 igencsak a Linuxos könyvtárak mélyén kotorászik, de talán a mingw-vel lefordulna.
De mondom, hozzáértés nélkül 99%, hogy befürdés lesz a vége.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: kapu48 »

De te is tudod, hogy Programot tesztelni csak meglevő Hardwerrel lehet?
Távolról így reménytelen a segítség az ügyben!


Sajnos nem tudhattam előre, hogy csak Linuxos forráskód létezik.
De mivel C-ben van megírva, szerintem kis javítással hordozhatónak kel lennie.

Én szívem szerint kihagynám a PC > rs232 kommunikációt.
Jobb megoldásnak találnám az MMC kártyáról beolvasni a rámentet, előre kiszámított effekteket.
De ezek szerint minden fejlesztési kísérlet reménytelen.

Az egész projekt lényege az Effektek gyors kiszámítása, hogy ne villogjon a kocka.
A sorsportra küldés csak 1 kis rutin lenne.

Feltettem ide a 2 forrás könyvtárat: LEDcubeSW.zip
AVR: ledcube_8x8x8-v0.1.2.tar.gz
PC: cube_pc-v0.1.tar.gz Ezt kellene lefordítani! Hogy fusson Win.XP-n?
LEDcubeSW.zip
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: Robert »

A LED kockának nincs 2 szabad lába? Oda egy I2C-s EEPROM is mehetne (64 kbyte simán elfér benne). De ez tényleg szoftvermódosítás....

Hülye tipp: BootCD ami linuxos, és azzal kipróbálni?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: kapu48 »

Akinek van hozzá HW-ja csak annyira lenne képes, hogy 1 gombot megnyomjon!

Így a fejlesztés csak kóbor ötletelés!
Majd esetleg idővel kinövi magát.

Szép –szép!
(De sajnos a sok LED beszerzése drága mulatság!)
:?
Avatar
Mickey5
DrótVégénSzéndarab
Hozzászólások: 24
Csatlakozott: 2008. október 6. hétfő, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: Mickey5 »

Sziasztok!

A kemény időjárás és a hosszú áramszünet megtréfált, csak most jutottam ismét nethez.

Nem értem, miért beszéltek fejlesztésről, én ilyet sohasem írtam. Éppen azért kértem segítséget itt, az AVR-es fórumban, mert az AVR kimaradt az életemből (PIC-et programozok ASM-ben, de azt is csak alapszinten). Találtam egy kész projektet (a kockát), amit meg tudok építeni és a lefordított hex-et is be tudtam égetni. De ha azt mondjátok, hogy a soros kommunikációt hagyjam a fenébe, akkor szót fogadok és el is felejtem az egészet. Az egészen biztos, hogy mostanában nem lesz annyi időm, hogy beleássam magam az AVR C-nyelvű programozásába. Főleg, ha még a Linux-Windows problémát is figyelembe veszem.

Azért mindenkinek köszönöm a segítséget! :)

Sziasztok!

A költségekre reagálva: a LED a legkisebb költség ebből az egészből (kb. 5 ezer forint). Viszont összességében 20-25-ezer, ha rendes munkát akar végezni az ember, saját tervezésű panelen. Lehet olcsóbban is, úgy ahogyan a szerző készítette: deszkalapra és univerzális panelre. Sok-sok türelem kell hozzá. Éppen ehhez a megoldáshoz kínálnak az egyik weblapon egységcsomagot 140 dollárért, ami kb. 32 ezer forint :!:
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 3D LED kocka vezérlése PC-vel

Hozzászólás Szerző: kapu48 »

Ha se időd, se tudásod a fejlesztéshez?
Marad a vásárlása! És kéred mellékelve a PC-s lefordítót, programot is.

Így minden meglesz, amit szeretnél!
Viszont ha megunod a vásárolt effekteket, nem fogsz tudni újabbakat létrehozni!
Válasz küldése