SK LABS
GD32 i RGBW
Skrivena glupa kontrola
D. PETROVIĆ
1. januar 2024.

Na tržištu postoji gomila kontrolera koji upravljaju RGB(W) LED trakama. Uglavnom su to kontroleri kojima se upravlja preko daljinca, ali nisu retki ni oni kojima se upravlja preko lokalne mreže. Zato još nismo naišli na „glup” kontroler, kontroler koji će, recimo, imati jedan taster, preko koga ćemo odabrati neku boju i koja će ostati dok nam ne „dune” da boju promenimo. Zato smo odlučili da jedan takav napravimo.

Odlučili smo da malo razbucamo dizajn pločice kojom smo pojačavali svetlost LED trake (SK 12/2023, i.sk.rs/32865). Uzeli smo GigaDevice G32F103F8P6, mikrokontroler sa isti, otiskom kao i GD32F303 koji smo koristili u pomenutom ranijem projektu. Osnovne komponente su iste, a to se odnosi na kristal od osam megaherca, kondenzatore, otpornike, način spuštanja korisničkog programa i drugo. Naša pločica će 12 volti, koje dobije od klasičnog napajanja za trake, preko četiri N-kanalna MOSFET-a TSM2312CX spuštati na željeni nivo. Ovi MOSFET-i su sasvim dovoljni da pogone pet metara RGBW trake. Obično ove trake imaju maksimalnu potrošnju od nekih 72 vata, s tim što W linija i postoji da se nikada ne pale svi kanali odjednom. Kod višebojnih RGB traka, bela boja se dobija mešanjem plave, crvene i zelene, kao na monitorima.

Mikrokontroler će svojih 3,3 volta dobiti iz 12 volti, a preko MCP1703 naponskog regulatora iz Microchipa koji obezbeđuje do 250 miliampera, a što je sasvim dovoljno. Dodali smo dva tastera, jedan veliki i jedan manji. Manji služi za ponovno pokretanje mikrokontrolera, dok sa većim biramo boju. Ovaj taster ima dva režima rada, shodno tome da li se pritiska kratko ili zadrži pritisnut. Tu su još terminali razmaka 2,54 milimetra, za povezivanje svega žicama i jedna statusna lampica.

Dimenzije pločice su 43×13,3 milimetara i zgodna je da se negde sakrije. Ideja je da na pločici imamo pripremljen set od desetak boja i da pritiskom na veći taster za unos podataka odaberemo boju. Nakon odabira, podaci o boji smestiće se u EEPROM, te nakon ponovnog pokretanja i bilo kog kasnije, GD32 će prikazati uvek odabranu boju.

Skeč preuzmite ovde: i.sk.rs/359620.

U skeču dodajemo neophodne biblioteke, deklarišemo izvode shodno nameni. Imaćemo nekoliko funkcija koje će koristiti funkciju millis() radi dodeljivanja tasteru više uloga. U funkciji setup() kao bitnu stvar navodimo čitanje podatka iz EEPROM-a na adresi 0. Ovaj podatak će biti broj koji ćemo koristiti za odabir boje. U loop() funkciji prva koja se izvršava je grbwOutputFunc(). U njoj imamo switch() petlju koja kao argument za case slučajeve uzima vrednost iz EEPROM-a, a koju smo uzeli u setup() funkciji. Imamo 10 slučajeva, a može ih biti manje ili više. Shodno vrednosti pročitanoj iz EEPROM-a važiće određeni case, a samim tim i određena analogWriteColorx() funkcija. U analogWriteColorx() koristimo PWM analogWrite() da ispišemo digitalne vrednosti od 0 do 255. Razumljivo, 0 će zatvoriti MOSFET-e, dok će svaka viša vrednost u procentima „otvoriti” MOSFET-e u rasponu od nula do 12 volti (inače, u sink konfiguraciji). Nijanse boja unete su u korisnički program i nije predviđeno da se menjaju.

Kako promeniti boju tasterom? Lako. U loop() funkciji imamo dve if() petlje. Ako je slučaj 0, što je normalno stanje, tada GD32 čeka da se taster drži duže od predviđenog vremena, gde je to longTime = 5000, odnosno pet sekundi. U tu svrhu se i koristi millis() funkcija, gde ako stanje tastera nije kao prethodno (pritisnut je), kreće odbrojavanje. Ako je odbrojavanje minus tekuće vreme više od zadatog vremena (taster je pritisnut duže od pet sekundi) menjamo slučaj u 1 i uključujemo statusnu lampicu koja će nam biti znak da smo ušli u režim promene boje. Dok god lampica ne svetli, nismo dovoljno dugo držali taster. Neko će, recimo, ovo vreme produžiti. Nakon izlaska iz petlje koju je inicirao slučaj 0, ulazimo u if() petlju koju inicira slučaj 1 (upravo smo caseSet promenili sa 0 u 1). Ovde, takođe, koristimo millis() i brojimo pritiske tastera. Nakon svakog pritiska se broj pritisaka u okviru te jedne sesije unosi u EEPROM. Imamo samo 10 definisanih boja, tako da ne dozvoljavamo unos veći od broja 10 u EEPROM, jer bi to kasnije izazvalo zahtev za prikazom boje koja ne postoji. Kada smo pritisnuli taster onoliko puta koliko smo želeli (broj pritisaka je u međuvremenu snimljen), pritiskamo manji taster za ponovno pokretanje mikrokontrolera. Pločica će, nakon buđenja, iz EEPROM-a pročitati redni broj boje i prikazivati je bez obzira na nestanke struje, ponovna pokretanja i slično. Ukoliko nismo ušli u režim promene boje dužim pritiskom, nije moguće promeniti boju kraćim, ma koliko puta kraće pritiskali veći taster.

Vi možete ovde dodati više boja, samim tim i više analogWriteColorx() funkcija (ne zaboraviti countPress da ne bude veći od broja boja). Možete da dodate koju liniju da već nakon pritisaka tastera odmah i vidite šta ste izabrali, a ne da čekate da se pločica ponovo pokrene.

Čemu ovo, ako već sve postoji gotovo? Tom logikom, ne treba ništa da pravimo, jer već sve može da se kupi gotovo. Projekat shvatite kao malu vežbu, kao putokaz šta biste možda mogli da napravite. Ovakav projekat može biti odličan za dekorativno osvetljenje kuhinjskih elemenata, skrivača u gipsu, ili slično. Pločica je mala, lako se krije, dovoljno da zaboravite i gde je, a veći taster koji smo ugradili lako se napipa. Komponente koje smo koristili jako su povoljne i mnoge mogu da se nabave i na domaćem tržištu. Na kraju, možete koristiti neki drugi mikrokontroler. Pa čak i Uno. On ima dovoljan broj PWM kanala. Uno ćete, doduše, malo teže sakriti.

GALERIJA

PRETHODNI TEKST
SLEDEĆI TEKST
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Aktuelno štampano izdanje
MAJ 2025
Microsoft Majorana 1
Kvantna topologija
Topološki kvantni računar otporan je na uticaj kosmičkog zračenja, ali i dalje mora da se ohladi skoro do apsolutne nule...
AMD Ryzen 9 9950X3D
Jedan, da svima vlada
Ako vam je potreban najbrži procesor, i za igranje, i za ozbiljnije zadatke, Ryzen 9 9950X3D nema konkurenciju...
Gigabyte GeForce RTX 5070 Ti Aero OC 16G i GeForce RTX 5070 Ti Gaming OC 16G
I za kreativce, i za igrače
Sasvim sposoban da se nosi sa 4K rezolucijom u svim igrama i pruži sasvim pristojne performanse, dok u 1440p apsolutno blista...
Asus ROG Strix Scar 18 (G835LX)
Fantastična zver i kako je kupiti (3)
Laptop namenjen onima koji „ne žale pare” da imaju ono što je trenutno najbolje i najbrže...
Deset najboljih Microsoft PowerToys alatki
Najbolji od najboljih
PowerToys Run je alatka kojoj treba da se okrenete ukoliko vam sistemska rutina za pretragu ne odgovara...
Apple iPhone 16e
Malo muzike za mnogo para
Problem nije samo cena i slabiji grafički podsistem, već i trajanje baterije...
Cemu 2.6
Wii U emulacija
Cemu omogućava pokretanje i privođenje kraju oko 57 procenata igara „napisanih” za Wii U...
.rs: nove usluge eUprave - novi propisi - najava 5G
Mnogo eNoviteta
U novom esDnevniku roditelji će dobijati notifikacije za ocene i izostanke...
Trgovinski rat Istoka i Zapada
Velika igra, nesagledive posledice
Kao u igri „kukavice”, dve supersile kreću se velikom brzinom jedna prema drugoj, izazivajući drugu da prva skrene...
Blue Prince
Jedinstveni dijamant i jedna od najoriginalnijih igara u poslednjih nekoliko godina...
Tempest Rising
Skupa i ambiciozna fotokopija legendarnog RTS klasika Command & Conquer...
South of Midnight
Magična igra koja izgleda kao živa bajka, animirana u stilu filmskog serijala „Spiderverse”...
© 2025 Svet kompjutera. Sva prava zadrzana.
Novi broj - Arhiva - Forum - O nama