Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Programi
  • Dinamičko pozadinsko osvjetljenje monitora na Arduinu. Osvetljenje piksela jednostavno i brzo

Dinamičko pozadinsko osvjetljenje monitora na Arduinu. Osvetljenje piksela jednostavno i brzo

Philips je patentirao neverovatno jednostavnu, ali bez preterivanja, neverovatnu tehnologiju pozadinskog osvetljenja televizora 2007. godine. Sa ovim prilagodljivim pozadinskim osvjetljenjem manji zamor očiju pri gledanju u mraku, povećava se efekat prisutnosti, širi se površina ekrana itd. Ambilight je primjenjiv ne samo na video i foto sadržaje, već i na igre. Ambilight je postao zaštitni znak Philips televizora. Od tada, Philips je budno pazio da se nijedan od velikih proizvođača ne usuđuje zadirati u sveto stvaranjem tako nečeg. Vjerovatno se ova tehnologija može licencirati, ali uvjeti su nečuveni, a drugi tržišni igrači to nisu posebno željni. Male kompanije su takođe pokušale (a sada postoje kompanije koje to rade) da uvedu sličnu tehnologiju u obliku zasebnih kompleta, ali je automobil Philips bio neizbežan. Dakle, u najboljem slučaju, ako kompanija nekako ne obnovi patent ili njegov derivat, drugi proizvođači će moći da izdaju nešto slično tek 2027. godine.

Ali za nas, obične potrošače, ova kazna ne važi. Slobodni smo da uradimo ono što smatramo potrebnim. Danas ću vam detaljno reći kako samostalno napraviti prilagodljivo pozadinsko osvjetljenje za TV ili monitor poput Philips Ambilight (u daljem tekstu jednostavno Ambilight). Za neke, članak neće sadržavati ništa novo po sebi, tk. Takvih projekata ima na desetine, stotine članaka su napisane na različitim jezicima, a postoje hiljade ljudi koji su to već uradili za sebe. Ali za mnoge sve ovo može biti vrlo zanimljivo. Ne trebaju vam nikakve posebne vještine. Samo osnovno znanje fizike za 8. razred gimnazije. Pa, i poprilično lemljenja žice.

Da biste bolje razumjeli o čemu govorim, daću svoj primjer onoga što se dogodilo. Pravi troškovi za TV 42" su oko 1000 rubalja i 2 sata rada.


Snimak ne prenosi sve senzacije i efekat u potpunosti, ali su djeca prvi put sjedila otvorenih usta.

Moguće opcije implementacije

Postoji nekoliko opcija za implementaciju Ambilight-a. Zavise od izvora video signala.

Najjeftinija, najjednostavnija i najefikasnija opcija je izvor signala Windows PC, Mac OS X ili Linux. Danas su Windows-bazirane kutije na Atom procesorima vrlo česte, koje koštaju od 70 dolara. Svi su savršeni za implementaciju Ambilight-a. Već nekoliko godina koristim razne Windows kutije (u TV ormariću) kao media player, napisao sam pregršt recenzija i smatram ih najboljim TV kutijama za medijski sadržaj. Hardverska implementacija ove opcije je ista za sve navedene operativne sisteme. O ovoj opciji ću govoriti u članku... Softverski dio će se odnositi na Windows sistem, AmbiBox će djelovati kao univerzalni upravljački program. Uz Mac OS X i Linux može se koristiti.

Druga opcija - izvor signala je medijski prilog baziran na Androidu, kojih također ima ogroman broj. Ova opcija je najproblematičnija. Prvo, isticanje će raditi samo u kombinaciji Kodi medija (i ograncima tog projekta). Drugo, u ogromnoj većini slučajeva sve radi samo sa onemogućenim hardverskim dekodiranjem videa, što je neprihvatljivo za većinu kutija. Hardverska implementacija projekta također nameće određene zahtjeve. Neću se doticati, ali ako nešto konkretno zanima, onda ću pokušati odgovoriti u komentarima.

Treća opcija je rješenje neovisno o izvoru. Ovo je najskuplje, ali apsolutno univerzalno rješenje. signal se preuzima direktno sa HDMI kabla. Za to vam je potreban dovoljno moćan mikroračunar (kao Raspberry Pi), HDMI razdjelnik (razdjelnik), HDMI-RCA AV konverter, USB 2.0 analogni uređaj za video snimanje. Samo uz ovu opciju možete garantovano koristiti Ambilight sa bilo kojim TV uređajem/risiverom, Android kutijama, Apple TV-om, igraćim konzolama (npr. Xbox One, PlayStation 4) itd. uređajima koji imaju HDMI izlaz. Za varijantu s podrškom za 1080p60, cijena komponenti (bez LED trake) bit će oko 70 dolara, s podrškom za 2160p60 - oko 100 dolara. Ova opcija je vrlo zanimljiva, ali o njoj morate napisati poseban članak.

Hardverski dio

Za implementaciju će vam trebati tri glavne komponente: upravljiva RGB LED traka, napajanje, Arduino mikroračunalo.

Prvo, nekoliko objašnjenja.

WS2811 je trokanalni kanalni kontroler / drajver (IC) za RGB LED diode sa jednožičnom kontrolom (adresira se na proizvoljnu LED diodu). WS2812B je RGB LED u SMD 5050 paketu, koji već ima ugrađen WS2811 kontroler.

LED trake koje su pogodne za projekat zovu se WS2811 ili WS2812B radi jednostavnosti.

WS2812B traka je traka na kojoj su LED diode WS2812B postavljene u seriju. Traka radi sa naponom od 5 V. Postoje trake različite gustine LED dioda. Obično su to: 144, 90, 74, 60, 30 po metru. Postoje različiti stepeni zaštite. Najčešće su to: IP20-30 (zaštita od prodora čvrstih čestica), IP65 (zaštita od prašine i mlaza vode), IP67 (zaštita od prašine i zaštita pri djelomičnom ili kratkotrajnom uranjanju u vodu do dubine od 1 m ). Podloga u crno-beloj boji.

Evo primjera takve trake:


WS2811 traka je traka na kojoj su serijski postavljeni kontroler WS2811 i neka vrsta RGB LED-a. Postoje opcije za 5 V i 12 V. Gustina i zaštita su slične prethodnoj opciji.

Evo primjera takve trake:


Tu su i WS2811 "trake" sa velikim i moćnim LED diodama, kao na slici ispod. Pogodni su i za implementaciju Ambilight-a za neke ogromne ploče.


Koju traku odabrati, WS2812B i WS2811?

Važan faktor je uvlačenje trake, o čemu ću govoriti malo kasnije.

Ako kod kuće imate odgovarajuću jedinicu za napajanje (često napajanja ostaju od stare ili oštećene opreme kod kuće), odaberite traku na osnovu napona napajanja, tj. 5V - WS2812B, 12V - WS2811. U ovom slučaju ćete jednostavno uštedjeti novac.

Sama mogu dati preporuku. Ako ukupan broj LED dioda u sistemu nije veći od 120, onda je WS2812B. Ako je više od 120, onda WS2811 sa radnim naponom od 12 V. Zašto je to tako, razumjet ćete kada je u pitanju spajanje trake na napajanje.

Koji nivo zaštite trake da odaberem?

Za većinu je prikladan IP65, jer sa jedne strane je premazan "silikonom" (epoksidna smola), a sa druge je 3M samoljepljiva površina. Pogodno je montirati ovu traku na TV ili monitor i zgodno je obrisati prašinu.

Koju LED gustinu odabrati?

Za projekt su prikladne trake gustoće od 30 do 60 LED dioda po metru (naravno, moguće je 144, nitko ne zabranjuje). Što je veća gustina, veća je rezolucija Ambilight (broj zona) i veća je maksimalna ukupna svjetlina. Ali treba imati na umu da što je više LED dioda u projektu, to će biti složeniji krug napajanja trake i bit će potrebno snažnije napajanje. Maksimalan broj LED dioda u projektu je 300.

Kupovina trake

Ako vaš TV ili monitor visi na zidu i sve 4 strane imaju puno slobodnog prostora jedna pored druge, onda je traku najbolje postaviti pozadi oko perimetra na sve 4 strane radi maksimalnog efekta. Ako je vaš TV ili monitor postavljen na postolje, ili nema dovoljno slobodnog prostora na dnu, onda traku treba postaviti na poleđinu sa 3 strane (tj. dno bez trake).

Za sebe sam odabrao bijelu traku WS2812B IP65 sa 30 LED dioda po metru. Već sam imao odgovarajuće napajanje od 5V. Odlučio sam da li 60 ili 30 LED dioda po metru, ali sam izabrao ovo drugo nakon što sam pregledao video sa gotovim primjerima implementacije - svjetlina i rezolucija su mi odgovarali, a napajanje je lakše organizirati, ima manje žica. Na Aliexpressu postoji ogromna količina traka WS2812B. Naručio sam 5 metara za 16 dolara. Za moj TV (42", 3 strane) trebalo mi je samo 2 metra, odnosno mogao sam da ga kupim za 10$, preostala tri metra za prijatelja. Cene se često menjaju od prodavaca, ponuda ima mnogo, pa samo izaberite jeftina partija na Aliexpressu sa visokom ocjenom (ključne riječi za pretraživanje - WS2812B IP65 ili WS2811 12V IP65).




Kupovina napajanja za traku

Jedinica za napajanje se bira prema snazi ​​i naponu. Za WS2812B - napon 5 V. Za WS2811 - 5 ili 12 V. Maksimalna potrošnja energije jedne LED WS2812B je 0,3 W. Za WS2811, u većini slučajeva je isto. One. snaga napajanja mora biti najmanje N*0,3 W, gdje je N broj LED dioda u projektu.

Na primjer, imate 42" TV, smjestili ste se na traku WS2812B sa 30 LED dioda po metru, potrebno vam je 3 metra trake na sve 4 strane. Trebat će vam jedinica za napajanje od 5 V maksimalne snage 0,3*30 * 3 = 27 W , tj. 5 V / 6 A. U mojoj implementaciji koriste se samo 3 strane, ukupno 60 LED dioda (tačnije 57) - snaga od 18 W, tj. 5 V / 4 A.

Imao sam ORICO CSA-5U (8 A) multi-port USB punjač duže vrijeme u mirovanju, ostao mi je od stare recenzije. Napajanje portova je paralelno sa njim (ovo je kritično važno), ovaj punjač mi je idealan kao jedinica za napajanje, jer Spojit ću traku kroz 2 paralelne veze (objašnjenja će biti malo kasnije u članku).


Da nemam ovu memoriju, odabrao bih (postoje informacije da je u ovom PSU-u unutrašnja jedinica stavljena na 2,5 A, tako da morate detaljnije proučiti ovo pitanje od prodavca ili pogledati druge modeli).

Kupovina mikroračunara

Ambilight će kontrolirati Arduino mikroračunar. Arduino Nano na Aliexpressu košta otprilike po komadu.

Troškovi za moju verziju (za TV 42"):

10 $ - 2 metra WS2812B IP65 (30 LED dioda po metru)
4 $ - napajanje 5 V / 4 A (nisam potrošio novac na PSU, citiram cijenu radi jasnoće)
2,5 dolara - Arduino Nano
-----------
16,5$ ili 1000 rubalja

Hardverska implementacija

Najvažnije je pravilno organizirati uvlačenje trake. Traka je duga, napon pada pri velikoj struji, posebno na 5 V. Većina problema koji se javljaju onima koji sami prave Ambilight, vezani su za napajanje. Koristim pravilo - potrebno je napraviti posebno napajanje za svakih 10 W maksimalne potrošnje energije na 5 V i 25 W potrošnje na 12 V. Dužina napajanja (od napajanja do same trake) treba biti minimalan (bez margine), posebno na 5 V.

Opći dijagram povezivanja je sljedeći (dijagram prikazuje priključak za napajanje za moju verziju):


Traka se napaja sa oba kraja - dvije paralelne veze. Na primjer, da sam napravio pozadinsko osvjetljenje na sve 4 strane, a traka je bila 60 LED dioda po metru (tj. maksimalna snaga je 54 W), onda bih napravio sljedeće napajanje:


Žice za napajanje moraju se koristiti na odgovarajući način, što je manji mjerač (AWG), to bolje, tako da su više nego dovoljne za izračunatu jačinu struje.

Dvije igle idu na Arduino sa trake. GND, koji treba biti spojen na odgovarajući pin na Arduinu. I DATA, koje je potrebno povezati na šesti digitalni pin preko otpornika od 300-550 Ohma (poželjno 470 Ohma). Ako nemate otpornik, onda će u većini slučajeva sve dobro raditi i bez njega, ali bolje ga je imati. Otpornik se može kupiti za nekoliko kopejki u bilo kojoj radio prodavnici. Sam Arduino mikroračunar može se staviti u bilo koje prikladno kućište, mnogi za to koriste Kinder iznenađenje jaje. Arduino treba postaviti što bliže traci tako da DATA vodi budu što kraći.

Lemljenje žica na traku je jednostavno. Glavno pravilo je da vrijeme kontakta s lemilom treba biti minimalno;

U mom slučaju je ispalo ovako:



Za napajanje su korištena dva crna visokokvalitetna USB kabla, a bijeli za povezivanje sa računarom. Ponestalo mi je bijele termoskupljajuće cijevi, koristio sam crvene. Nije baš “lepo”, ali mi pristaje (i dalje je skriveno iza TV-a).

Važno pitanje je kako savijati traku pod pravim uglom? Ako imate LED traku od 60, onda traku treba izrezati i spojiti kratkim žicama (tako što ćete sve to staviti u termoskupljajuću cijev). Možete kupiti posebne kutne konektore za tri pina za LED trake (na slici su 4 pina, samo za primjer):


Ako imate LED traku od 30, tada je udaljenost između LED dioda velika, možete lako napraviti kut bez rezanja. Uklonite komad "silikonskog" premaza, izolirajte (možete čak koristiti i "traku") kontaktnu podlogu i savijte je prema sljedećoj shemi:

Odrezao sam komad trake za vježbu. Glavna stvar je da ne pretjerate - jednom su se malo savijali i to je to. Ne morate se tu i tamo savijati, ne morate snažno stiskati liniju savijanja.


Evo zadnjeg pogleda na TV, sve žice prolaze kroz rupu u ormariću:

Softverski dio

Ovo je najjednostavniji.

Arduino mikroračunar povezujemo preko USB-a. Drajver (serijski interfejs CH340) će biti instaliran automatski. Ako se to nije dogodilo, tada se u Arduino IDE mapi nalazi mapa Drivers sa svime što vam je potrebno.

Pokrenite Arduino IDE i otvorite datoteku Adalight.ino.


Mijenjamo broj LED dioda u kodu. imam 57.


Alati> Ploča> Arduino nano
Alati> Port> Odaberite COM port (postoji željena opcija)

Pritisnite dugme "Preuzmi":


Program će vas obavijestiti kada je preuzimanje završeno (ovo je bukvalno nekoliko sekundi).

Spreman. Morate odspojiti Arduino sa USB-a i ponovo ga spojiti. Traka će zasvijetliti uzastopno crvenom, zelenom i plavom - Arduino se aktivirao i spreman je za rad.

Preuzmite i instalirajte program. U programu kliknite na "Više postavki" i navedite uređaj - Adalight, COM port i broj LED dioda. Odaberite broj kadrova za snimanje (do 60).


Zatim kliknite Prikaži zone snimanja> Čarobnjak za konfiguraciju zone. Odaberite konfiguraciju trake.


Kliknite na Apply and Save Settings. Ovim se završavaju osnovna podešavanja. Zatim možete eksperimentisati sa veličinom zona snimanja, izvršiti korekciju boje trake, itd. Program ima mnogo različitih podešavanja.


Da biste aktivirali profil, samo dvaput kliknite na odgovarajuću ikonu (AmbiBox profili) u Windows sistemskoj traci poslova. Traka će odmah zasvijetliti. Također se isključuje dvostrukim klikom.

To je u osnovi to. Rezultat ste vidjeli na početku članka. Ništa komplikovano, jeftino i odlično. Siguran sam da ćete biti bolji, pa podijelite svoje zanate u komentarima.

Kako bih malo razvodnio recenzije kupaćih kostima, ispričat ću vam svoje iskustvo u izgradnji dinamičkog pozadinskog osvjetljenja za TV. prestanite praviti muska habr
Glavni dio pozadinsko osvetljenje ipak postoji LED traka, pa sam je odlučio da stavim u naslov. iako je u konstrukciju bilo uključeno nešto više komponenti.

Ako ste dugo željeli da zašrafite pozadinsko osvjetljenje na svoj televizor koji nije Philips, ali ste se bojali to isprobati, pokušajte. lakše je nego što zvuči.

Za sjeme, mali video o rezultatu.


Trenutno - pozadinsko osvjetljenje radi još bolje - u postavkama sam podesio veću svjetlinu i veću brzinu osvježavanja, sada u akcionim filmovima ili scenama u klubu (kada je stroboskopski blic u kadru) - samo cijeli zid eksplodira svetlošću

Kako je to urađeno je prilično jednostavno:
+
+
+
Malo hrabrosti =
Ambilight

Detaljnije, tačku po tačku:
1 Malina sam već jeo u to vrijeme. Kupio sam ga na istom mjestu na Amazonu, ali mislim da porijeklo uloge ovdje ne igra - ploča je ujedinjena i možete je kupiti potpuno bilo gdje - glavna stvar koju ne savjetujem da uzimate BU. nakon određenog vremena rada na maksimalnoj frekvenciji bez dodatnih radijatora, počeo sam podglyuchitsya. Otpisujem zbog pregrijavanja, ali može biti glupi proizvodni nedostatak. Maline su izuzetno osjetljive na izvor napajanja, pa odmah nabavite normalnu napojnu jedinicu sa niskim nivoom talasanja... (i kako ne bi potonula pod opterećenjem)
2 Prava traka. Kako to radi mislim da je prilično dobro vidjeti na videu. nema ništa posebno u samoj traci - odrezao sam komade tako da je bilo dovoljno za tačno 3 strane TV-a. Tačke savijanja sam zalemio komadima žice (prvo sam spojio konektorima, ali je brzo razbjesnilo što su komadi žice dugo stršili - sve sam isjekao i zalemio na male komade)
3 Genijalni program hiperion. Instalirano na maline (imam multimedijalni OpenElec kao OS) po uputstvu za idiote. Čak sam i prvi put uspio. U procesu rada, glupo hvata podatke o boji ivica ekrana, prosječuje i šalje kontrolne signale na LED traku. Traka namiguje svim duginim bojama, publika je oduševljena. U toku rada, kada se igra fullHD sa težinom od 30 giga, dodatno opterećenje po procentu je 5-10%. Na brzinu to ni na koji način ne utiče.

Rezultat je iznad najluđih očekivanja:
sa gustinom LED dioda od 30 tona po metru, ceo zid iza televizora (uklanjanje oko 10-15 centimetara) je obojen u boje ekrana. vizuelno, pozornica se odmiče... pa, koliko god da je ovaj zid. nema kašnjenja u prenosu. barem nemoguće ući u trag okom. sve je glatko i jasno. Za pametni telefon postoji kul program pomoću kojeg možete prebaciti pozadinsko osvjetljenje u dnevni režim - postaviti željenu boju/svjetlinu ili pokrenuti neki od predloženih uzoraka (kao što je trčanje crvenog svjetla, ili samo duga, ili za primjer prijelaza boja).
Kada se pozadinsko osvjetljenje isključi dok gleda crtane filmove, kćerka je ogorčena i zahtijeva da sve vrati.)))

Pa, kako bismo bili u skladu s MySKU politikom, pregled samih detalja:
LED traka - zanemarena mnogo puta. Ja sam dobio potpuno isti. Veoma dobro. kvalitet je odličan. prikazuje ako me pamćenje ne vara - 16 miliona nijansi. nije se tačno računalo. zahtijeva dodatno napajanje - obješen plus ili minus na jedinici od 5v 2A - 2 metra je više nego dovoljno. Mislim da je dovoljno za 3, ali ne garantujem. Donio sam kontrolne kontakte na malin GPIO.

Malinka je jednostruki računar. Samo lijeni nisu bili zanemareni. Odlična stvar i za savladavanje osnova Linuxa i za izgradnju minimalističkog i fleksibilnog medijskog centra. Ispostavilo se da je to idealna opcija za mene: skroluje kroz bilo koji sadržaj koji mi je dostupan, radi kao prijemnik i prikazuje Internet TV, pretvara se da je prijemnik AirPlay signala kada želim da pokrenem nešto sa telefona ili laptopa. Odlična stvar - 3 vata i puno zabave + HDMI CEC podrška iz kutije - sve se kontroliše putem vlastitog daljinskog upravljača televizora.

I na kraju, još jedan video u potrazi:

Prije par dana sam odlučila napraviti još demovidosa - već u novom stanu.

boja zida je pistacija, nisam mijenjao postavke i necu. tako da su boje malo zelene. Sviđa mi se, ali me ne zanima tvoje mišljenje)

Planiram kupiti +69 Dodaj u favorite Svidjela mi se recenzija +16 +48

Televizori s dinamičkim pozadinskim osvjetljenjem oko okvira ekrana jedan su od vlasničkih čipova kompanije Philips. I za razliku od mnogih drugih, radi. Međutim, sve ima svoju cijenu, a televizori s Ambilight-om i impresivnim prisustvom skuplji su od mnogih drugih modela.

Ruski programeri su predložili metodu koja će monitore bilo kojeg proizvođača opremiti dinamičkim pozadinskim osvjetljenjem. Da biste to učinili, ne morate čak ni nositi uređaj u servisni centar: potrebno vam je samo malo vremena i upornosti.

Općenito, takvo pozadinsko osvjetljenje može se kupiti kao radio komponente i samostalno konfigurirati. Ali, kao što praksa pokazuje, ovo je gotovo uporedivo sa gotovim opcijama iz PaintPack-a.

Dostupna su dva glavna modela: verzija za monitor (30 LED dioda) i verzija za TV (60 LED dioda). Postoji i jedan vrlo jednostavan - za 10 LED dioda, ali je pogodan samo za najmanje monitore.

TV verzija je opremljena eksternim napajanjem. Takođe, u prilog tome govori i veći broj LED dioda, što daje veću površinu osvjetljenja (sjaće šire i više, drugim riječima). Ako takve opcije iz bilo kojeg razloga nisu prikladne, možete kontaktirati programere: uz malu doplatu, ponudit će modificiranu verziju.

mindrunway.ru

PaintPack je, zapravo, malo kućište, na koje su s obje strane povezane LED trake koje se mogu ukloniti. Kutija sa punjenjem sadrži indikatore i konektor za napajanje, kao i microUSB za povezivanje sa računarom. Tu je i glavni konektor (vlasnički) za uzastopno povezivanje dva uređaja.

Tijelo uređaja nalazi se na stražnjoj strani televizora ili monitora. Zatim se postavljaju LED trake u skladu s uputama, spaja se napajanje i počinje vještičarenje. Kada povezujete PaintPack sa računarom preko USB-a, potrebno je instalirati drajvere i konfigurisati uređaj u priloženom programu.


mysku.ru

Podešavanje se vrši pomoću paketa AmbiBox. Potrebno je otići u meni "Inteligentno pozadinsko osvetljenje", odabrati način snimanja ekrana i jedan od režima rada koji se nudi u programu:

  1. Statička pozadina - može se podesiti bilo koja boja, LED sjaj je regulisan.
  2. Muzika u boji - pozadinsko osvetljenje će treptati u skladu sa zvukom muzike. Boja pozadinskog osvjetljenja je postavljena na zeleno-žuta.
  3. Dinamična pozadina - glatko prelivanje jedne boje u drugu.
  4. Snimanje ekrana je glavni način rada.

U ovom načinu rada moguće je snimiti boje iz filmova i igara koje gledate. Boja pozadinskog osvetljenja će se menjati u skladu sa slikom na ekranu, podeljenom na gornju, donju i bočnu zonu (svaku posebno).

PaintPack je malo sporiji od zvaničnog Philipsovog kolege. Ali uzimajući u obzir razliku u cijeni i mogućnost nadogradnje bilo kojeg uređaja, izbor je očigledan.

Prije nekoliko godina na mySKU je bila objavljena sjajna recenzija, koja je objavljena P43YM... Komentari iz ove recenzije su također odlični - to je samo ogromna baza znanja (toliko ogromna da pretraživač jedva može učitati ovu stranicu). Vrijeme prolazi, komponente su sve jeftinije, mySKU stiče novu publiku koja je mogla propustiti ovu recenziju. Takođe sam odlučio da svojim rečima opišem proces kreiranja prilagodljivog pozadinskog osvetljenja za TV ili monitor kao što je Philips Ambilight. Možda će moja recenzija nekome biti korisna.

Philips je patentirao neverovatno jednostavnu, ali bez preterivanja, neverovatnu tehnologiju pozadinskog osvetljenja televizora 2007. godine. Sa ovim prilagodljivim pozadinskim osvjetljenjem manji zamor očiju pri gledanju u mraku, povećava se efekat prisutnosti, širi se površina ekrana itd. Ambilight je primjenjiv ne samo na video i foto sadržaje, već i na igre. Ambilight je postao zaštitni znak Philips televizora. Od tada, Philips je budno pazio da se nijedan od velikih proizvođača ne usuđuje zadirati u sveto stvaranjem tako nečeg. Vjerovatno se ova tehnologija može licencirati, ali uvjeti su nečuveni, a drugi tržišni igrači to nisu posebno željni. Male kompanije su takođe pokušale (a sada postoje kompanije koje to rade) da uvedu sličnu tehnologiju u obliku zasebnih kompleta, ali je automobil Philips bio neizbežan. Dakle, u najboljem slučaju, ako kompanija nekako ne obnovi patent ili njegov derivat, drugi proizvođači će moći da izdaju nešto slično tek 2027. godine.

Ali za nas, obične potrošače, ova kazna ne važi. Slobodni smo da uradimo ono što smatramo potrebnim. Danas ću vam detaljno reći kako samostalno napraviti prilagodljivo pozadinsko osvjetljenje za TV ili monitor poput Philips Ambilight (u daljem tekstu jednostavno Ambilight). Za neke, članak neće sadržavati ništa novo po sebi, tk. Takvih projekata ima na desetine, stotine članaka su napisane na različitim jezicima, a postoje hiljade ljudi koji su to već uradili za sebe. Ali za mnoge sve ovo može biti vrlo zanimljivo. Ne trebaju vam nikakve posebne vještine. Samo osnovno znanje fizike za 8. razred gimnazije. Pa, i poprilično lemljenja žice.

Da biste bolje razumjeli o čemu govorim, daću svoj primjer onoga što se dogodilo. Pravi troškovi za TV 42" su oko 1000 rubalja i 2 sata rada.



Snimak ne prenosi sve senzacije i efekat u potpunosti, ali su djeca prvi put sjedila otvorenih usta.

Moguće opcije implementacije

Postoji nekoliko opcija za implementaciju Ambilight-a. Zavise od izvora video signala.

Najjeftinija, najjednostavnija i najefikasnija opcija je izvor signala Windows PC, Mac OS X ili Linux. Danas su Windows-bazirane kutije na Atom procesorima vrlo česte, koje koštaju od 70 dolara. Svi su savršeni za implementaciju Ambilight-a. Već nekoliko godina koristim razne Windows kutije (u TV ormariću) kao media player, napisao sam pregršt recenzija i smatram ih najboljim TV kutijama za medijski sadržaj. Hardverska implementacija ove opcije je ista za sve navedene operativne sisteme. O ovoj opciji ću govoriti u članku... Softverski dio će se odnositi na Windows sistem, AmbiBox će djelovati kao univerzalni upravljački program. Uz Mac OS X i Linux može se koristiti.

Druga opcija - izvor signala je medijski prilog baziran na Androidu, kojih također ima ogroman broj. Ova opcija je najproblematičnija. Prvo, isticanje će raditi samo u kombinaciji Kodi medija (i ograncima tog projekta). Drugo, u ogromnoj većini slučajeva sve radi samo sa onemogućenim hardverskim dekodiranjem videa, što je neprihvatljivo za većinu kutija. Hardverska implementacija projekta također nameće određene zahtjeve. Neću se doticati, ali ako nešto konkretno zanima, onda ću pokušati odgovoriti u komentarima.

Treća opcija je rješenje neovisno o izvoru. Ovo je najskuplje, ali apsolutno univerzalno rješenje. signal se preuzima direktno sa HDMI kabla. Za to vam je potreban dovoljno moćan mikroračunar (kao Raspberry Pi), HDMI razdjelnik (razdjelnik), HDMI-RCA AV konverter, USB 2.0 analogni uređaj za video snimanje. Samo uz ovu opciju možete garantovano koristiti Ambilight sa bilo kojim TV uređajem/risiverom, Android kutijama, Apple TV-om, igraćim konzolama (npr. Xbox One, PlayStation 4) itd. uređajima koji imaju HDMI izlaz. Za varijantu s podrškom za 1080p60, cijena komponenti (bez LED trake) bit će oko 70 dolara, s podrškom za 2160p60 - oko 100 dolara. Ova opcija je vrlo zanimljiva, ali o njoj morate napisati poseban članak.

Hardverski dio

Za implementaciju će vam trebati tri glavne komponente: upravljiva RGB LED traka, napajanje, Arduino mikroračunalo.

Prvo, nekoliko objašnjenja.

WS2811 je trokanalni kanalni kontroler / drajver (IC) za RGB LED diode sa jednožičnom kontrolom (adresira se na proizvoljnu LED diodu). WS2812B je RGB LED u SMD 5050 paketu, koji već ima ugrađen WS2811 kontroler.

LED trake koje su pogodne za projekat zovu se WS2811 ili WS2812B radi jednostavnosti.

WS2812B traka je traka na kojoj su LED diode WS2812B postavljene u seriju. Traka radi sa naponom od 5 V. Postoje trake različite gustine LED dioda. Obično su to: 144, 90, 74, 60, 30 po metru. Postoje različiti stepeni zaštite. Najčešće su to: IP20-30 (zaštita od prodora čvrstih čestica), IP65 (zaštita od prašine i mlaza vode), IP67 (zaštita od prašine i zaštita pri djelomičnom ili kratkotrajnom uranjanju u vodu do dubine od 1 m ). Podloga u crno-beloj boji.

Evo primjera takve trake:


WS2811 traka je traka na kojoj su serijski postavljeni kontroler WS2811 i neka vrsta RGB LED-a. Postoje opcije za 5 V i 12 V. Gustina i zaštita su slične prethodnoj opciji.

Evo primjera takve trake:


Tu su i WS2811 "trake" sa velikim i moćnim LED diodama, kao na slici ispod. Pogodni su i za implementaciju Ambilight-a za neke ogromne ploče.


Koju traku odabrati, WS2812B i WS2811?

Važan faktor je uvlačenje trake, o čemu ću govoriti malo kasnije.

Ako kod kuće imate odgovarajuću jedinicu za napajanje (često napajanja ostaju od stare ili oštećene opreme kod kuće), odaberite traku na osnovu napona napajanja, tj. 5V - WS2812B, 12V - WS2811. U ovom slučaju ćete jednostavno uštedjeti novac.

Sama mogu dati preporuku. Ako ukupan broj LED dioda u sistemu nije veći od 120, onda je WS2812B. Ako je više od 120, onda WS2811 sa radnim naponom od 12 V. Zašto je to tako, razumjet ćete kada je u pitanju spajanje trake na napajanje.

Koji nivo zaštite trake da odaberem?

Za većinu je prikladan IP65, jer sa jedne strane je premazan "silikonom" (epoksidna smola), a sa druge je 3M samoljepljiva površina. Pogodno je montirati ovu traku na TV ili monitor i zgodno je obrisati prašinu.

Koju LED gustinu odabrati?

Za projekt su prikladne trake gustoće od 30 do 60 LED dioda po metru (naravno, moguće je 144, nitko ne zabranjuje). Što je veća gustina, veća je rezolucija Ambilight (broj zona) i veća je maksimalna ukupna svjetlina. Ali treba imati na umu da što je više LED dioda u projektu, to će biti složeniji krug napajanja trake i bit će potrebno snažnije napajanje. Maksimalan broj LED dioda u projektu je 300.

Kupovina trake

Ako vaš TV ili monitor visi na zidu i sve 4 strane imaju puno slobodnog prostora jedna pored druge, onda je traku najbolje postaviti pozadi oko perimetra na sve 4 strane radi maksimalnog efekta. Ako je vaš TV ili monitor postavljen na postolje, ili nema dovoljno slobodnog prostora na dnu, onda traku treba postaviti na poleđinu sa 3 strane (tj. dno bez trake).

Za sebe sam odabrao bijelu traku WS2812B IP65 sa 30 LED dioda po metru. Već sam imao odgovarajuće napajanje od 5V. Odlučio sam da li 60 ili 30 LED dioda po metru, ali sam izabrao ovo drugo nakon što sam pregledao video sa gotovim primjerima implementacije - svjetlina i rezolucija su mi odgovarali, a napajanje je lakše organizirati, ima manje žica. Na Aliexpressu postoji ogromna količina traka WS2812B. Naručio sam 5 metara za 16 dolara. Za moj TV (42", 3 strane) trebalo mi je samo 2 metra, odnosno mogao sam da ga kupim za 10$, preostala tri metra za prijatelja. Cene se često menjaju od prodavaca, ponuda ima mnogo, pa samo izaberite jeftina partija na Aliexpressu sa visokom ocjenom (ključne riječi za pretraživanje - WS2812B IP65 ili WS2811 12V IP65).




Kupovina napajanja za traku

Jedinica za napajanje se bira prema snazi ​​i naponu. Za WS2812B - napon 5 V. Za WS2811 - 5 ili 12 V. Maksimalna potrošnja energije jedne LED WS2812B je 0,3 W. Za WS2811, u većini slučajeva je isto. One. snaga napajanja mora biti najmanje N*0,3 W, gdje je N broj LED dioda u projektu.

Na primjer, imate 42" TV, smjestili ste se na traku WS2812B sa 30 LED dioda po metru, potrebno vam je 3 metra trake na sve 4 strane. Trebat će vam jedinica za napajanje od 5 V maksimalne snage 0,3*30 * 3 = 27 W , tj. 5 V / 6 A. U mojoj implementaciji koriste se samo 3 strane, ukupno 60 LED dioda (tačnije 57) - snaga od 18 W, tj. 5 V / 4 A.

Imao sam ORICO CSA-5U (8 A) multi-port USB punjač duže vrijeme u mirovanju, ostao mi je od stare recenzije. Napajanje portova je paralelno sa njim (ovo je kritično važno), ovaj punjač mi je idealan kao jedinica za napajanje, jer Spojit ću traku kroz 2 paralelne veze (objašnjenja će biti malo kasnije u članku).


Da nemam ovu memoriju, onda bih izabrao (ali u komentarima pišu da često stavljaju 2,5 A unutra, pa je bolje proučiti ovo pitanje detaljnije).

Kupovina mikroračunara

Ambilight će kontrolirati Arduino mikroračunar. Arduino Nano na Aliexpressu košta otprilike po komadu.

Troškovi za moju verziju (za TV 42"):

10 $ - 2 metra WS2812B IP65 (30 LED dioda po metru)
4 $ - napajanje 5 V / 4 A (nisam potrošio novac na PSU, citiram cijenu radi jasnoće)
2,5 dolara - Arduino Nano
-----------
16,5$ ili 1000 rubalja

Hardverska implementacija

Najvažnije je pravilno organizirati uvlačenje trake. Traka je duga, napon pada pri velikoj struji, posebno na 5 V. Većina problema koji se javljaju onima koji sami prave Ambilight, vezani su za napajanje. Koristim pravilo - potrebno je napraviti posebno napajanje za svakih 10 W maksimalne potrošnje energije na 5 V i 25 W potrošnje na 12 V. Dužina napajanja (od napajanja do same trake) treba biti minimalan (bez margine), posebno na 5 V.

Opći dijagram povezivanja je sljedeći (dijagram prikazuje priključak za napajanje za moju verziju):


Traka se napaja sa oba kraja - dvije paralelne veze. Na primjer, da sam napravio pozadinsko osvjetljenje na sve 4 strane, a traka je bila 60 LED dioda po metru (tj. maksimalna snaga je 54 W), onda bih napravio sljedeće napajanje:


Žice za napajanje moraju se koristiti na odgovarajući način, što je manji mjerač (AWG), to bolje, tako da su više nego dovoljne za izračunatu jačinu struje.

Dvije igle idu na Arduino sa trake. GND, koji treba biti spojen na odgovarajući pin na Arduinu. I DATA, koje je potrebno povezati na šesti digitalni pin preko otpornika od 300-550 Ohma (poželjno 470 Ohma). Ako nemate otpornik, onda će u većini slučajeva sve dobro raditi i bez njega, ali bolje ga je imati. Otpornik se može kupiti za nekoliko kopejki u bilo kojoj radio prodavnici. Sam Arduino mikroračunar može se staviti u bilo koje prikladno kućište, mnogi za to koriste Kinder iznenađenje jaje. Arduino treba postaviti što bliže traci tako da DATA vodi budu što kraći.

Lemljenje žica na traku je jednostavno. Glavno pravilo je da vrijeme kontakta s lemilom treba biti minimalno;

U mom slučaju je ispalo ovako:



Za napajanje su korištena dva crna visokokvalitetna USB kabla, a bijeli za povezivanje sa računarom. Ponestalo mi je bijele termoskupljajuće cijevi, koristio sam crvene. Nije baš “lepo”, ali mi pristaje (i dalje je skriveno iza TV-a).

Važno pitanje je kako savijati traku pod pravim uglom? Ako imate LED traku od 60, onda traku treba izrezati i spojiti kratkim žicama (tako što ćete sve to staviti u termoskupljajuću cijev). Možete kupiti posebne kutne konektore za tri pina za LED trake (na slici su 4 pina, samo za primjer):


Ako imate LED traku od 30, tada je udaljenost između LED dioda velika, možete lako napraviti kut bez rezanja. Uklonite komad "silikonskog" premaza, izolirajte (možete čak koristiti i "traku") kontaktnu podlogu i savijte je prema sljedećoj shemi:

Odrezao sam komad trake za vježbu. Glavna stvar je da ne pretjerate - jednom su se malo savijali i to je to. Ne morate se tu i tamo savijati, ne morate snažno stiskati liniju savijanja.


Evo zadnjeg pogleda na TV, sve žice prolaze kroz rupu u ormariću:

Softverski dio

Ovo je najjednostavniji.

Arduino mikroračunar povezujemo preko USB-a. Drajver (serijski interfejs CH340) će biti instaliran automatski. Ako se to nije dogodilo, tada se u Arduino IDE mapi nalazi mapa Drivers sa svime što vam je potrebno.

Pokrenite Arduino IDE i otvorite datoteku Adalight.ino.


Mijenjamo broj LED dioda u kodu. imam 57.


Alati> Ploča> Arduino nano
Alati> Port> Odaberite COM port (postoji željena opcija)

Pritisnite dugme "Preuzmi":


Program će vas obavijestiti kada je preuzimanje završeno (ovo je bukvalno nekoliko sekundi).

Spreman. Morate odspojiti Arduino sa USB-a i ponovo ga spojiti. Traka će zasvijetliti uzastopno crvenom, zelenom i plavom - Arduino se aktivirao i spreman je za rad.

Preuzmite i instalirajte program. U programu kliknite na "Više postavki" i navedite uređaj - Adalight, COM port i broj LED dioda. Odaberite broj kadrova za snimanje (do 60).


Zatim kliknite Prikaži zone snimanja> Čarobnjak za konfiguraciju zone. Odaberite konfiguraciju trake.


Kliknite na Apply and Save Settings. Ovim se završavaju osnovna podešavanja. Zatim možete eksperimentisati sa veličinom zona snimanja, izvršiti korekciju boje trake, itd. Program ima mnogo različitih podešavanja.


Da biste aktivirali profil, samo dvaput kliknite na odgovarajuću ikonu (AmbiBox profili) u Windows sistemskoj traci poslova. Traka će odmah zasvijetliti. Također se isključuje dvostrukim klikom.

To je u osnovi to. Rezultat ste vidjeli na početku članka. Ništa komplikovano, jeftino i odlično. Siguran sam da možeš bolje!

Planiram kupiti +435 Dodaj u favorite Svidjela mi se recenzija +270 +577

Dobar dan.

Za svoj prvi članak odabrao sam jednu od svojih najuspješnijih rukotvorina: HDMI-passthrough analog Ambilight-a iz Philipsa, u nastavku ću ovu kompoziciju zvati "Atmosvet".

Uvod
Na internetu nije teško pronaći gotova / open-source rješenja i članke o tome kako napraviti Ambilight za monitor / TV, ako prikazujete sliku sa PC-a. Ali u mom multimedijalnom sistemu prikazivanje slike na TV-u sa računara oduzima samo 5% vremena korišćenja, više vremena igram sa konzola za igre, što znači da sam morao da smislim nešto svoje.
Početni podaci:
  • 60 "Plazma TV
  • HTPC baziran na Asrock Vision 3D 137B
  • Xbox 360
Većina uređaja koristi HDCP za reprodukciju sadržaja čak i tokom reprodukcije.
Zahtjev:
Potrebno je obezbijediti centraliziranu podršku za Atmosvet za sve uređaje priključene na TV.
Implementacija
Neću vam reći kako sam prikačio LED traku od 4,5m na TV i šta treba da se uradi sa Arduinom, možete je koristiti kao osnovu.

Jedino upozorenje:
Primetio sam da ima cudno treperenje na dnu ekrana, prvo sam pogresio na signalu, ponovo izabrao defliker, promenio promenu velicine slike i iskopao dosta stvari, popravilo se, ali treperenje nije pomoglo. Počeo sam da posmatram. Ispostavilo se da je treperenje bilo samo na kraju trake, i to u svijetlim scenama. Uzimajući multimetar, izmjerio sam napon na početku, sredini i kraju trake i pogodio uzrok treperenja: na početku trake je bio 4,9V (da, kineska jedinica za napajanje daje napon sa odstupanje, ovo nije važno), u sredini 4.5 na kraju 4.22 - Pad napona je previše značajan, morao sam jednostavno riješiti problem - do sredine trake sam doveo napajanje iz jedinice za napajanje, stavio žica iza TV-a. Pomoglo je odmah, svako treperenje je potpuno prestalo.

Snimanje slike web kamerom
Prva test verzija za pokretanje ideje i njene vizualizacije odabrana je snimanjem slike putem web kamere) izgledala je otprilike ovako:

Nizak prikaz boja i velika latencija pokazali su da se ova implementacija ne može koristiti ni na koji način.

Snimanje slike putem HDMI-ja

U procesu istraživanja mogućih opcija, odabrana je sljedeća shema, kao najpouzdanija i najisplativija:

  • Signal sa svih uređaja se dovodi do HDMI prekidača 5u-1out koji podržava HDCP
  • Izlazni signal se dovodi do 1-u-2-izlaznog HDMI razdelnika, koji ne samo da podržava HDCP, već ga i isključuje na izlazu (hvala Kinezima).
  • Jedan od izlaznih signala ide na TV
  • Drugi izlazni signal ide na HDMI u AV konverter
  • S-Video signal ide u kutiju za snimanje iz ICONBIT-a
  • Kutija za snimanje se povezuje na uvijek pokrenuti HTCP preko USB-a, koji je povezan s Arduino kontrolerom trake na TV-u.

U početku izgleda divlje i kao štake, ali:

  • Radi.
  • Sumirajući cijelu stvar, naručivanje iz Kine, koštalo me je 3-4 hiljade rubalja.

Zašto nisam koristio HDMI ploču za snimanje? Jednostavno je: najjeftinija i najpovoljnija opcija je Blackmagic Intensity Shuttle, ali ne može raditi sa 1080p / 60fps signalima, samo 1080p / 30fps - što nije prihvatljivo, jer Nisam želio da smanjim brzinu kadrova da bih mogao snimiti sliku. + ovaj posao je koštao oko 10 hiljada. rublja. - što nije jeftino ako je rezultat nepoznat.

Gubitak pri pretvaranju HDMI u S-video je beznačajan za snimanje boja u rezoluciji 46x26 LED pozadinskog osvjetljenja.

U početku, za snimanje S-videa, pokušao sam koristiti EasyCap (ima mnogo kineskih varijacija), ali suština je da je čip koji se tamo koristi izuzetno loš i ne možete raditi s njim koristeći openCV.

Jedina mana je što je S-Video izlazni signal sadržavao crne trake na rubovima, odsijecajući pravi sadržaj (oko 2-5%), izrezao sam izlaznu sliku sa kartice za snimanje da uklonim ove trake, sam gubitak slike u tim oblastima nije uticalo na rezultat u praksi.

Softver
Ovo mi je bio najzanimljiviji dio, jer Ne volim baš kockati po komadima gvožđa.

Za snimanje slike koristio sam openCV, a posebno njegov .NET omotač emgu CV.

Također sam odlučio primijeniti nekoliko različitih tehnika naknadne obrade i pripreme slike prije nego što pošaljem listu boja u kontroler.

Obrada okvira
1. Primanje snimljenog kadra
2. Izrežite okvir da isključite crne trake
Ovdje je sve jednostavno:
okvir.ROI = novi pravougaonik (8, 8, okvir. Širina - 8, okvir. Visina - 18 - 8);
Izrežite 8 piksela od vrha, 8 s desne strane i 18 od dna (bez trake na lijevoj strani)
3. Promenite veličinu okvira na rezoluciju pozadinskog osvetljenja, nema potrebe da nosimo zdravu sliku sa sobom
Ništa komplikovano, radimo pomoću openCV alata:
frame.Resize (LedWidth - 2 * LedSideOverEdge,
LedHeight - LedBottomOverEdge - LedTopOverEdge,
INTER.CV_INTER_LINEAR);
Pažljivi čitalac će primijetiti obilje varijabli. Činjenica je da je moj TV okvir dovoljno velik, zauzima 1 LED sa strane, 1 na vrhu i 3 na dnu, tako da se promjena veličine vrši na LED diodama koje su direktno nasuprot displeju, a uglove već dopunjavamo kasnije. Prilikom promjene veličine, dobijamo samo prosječne boje koje bi pikseli LED dioda trebali imati.
4. Vršimo mapiranje LED dioda iz rezanog okvira
Pa, i ovdje je sve jednostavno, glupo prolazimo kroz svaku stranu i uzastopno popunjavamo niz od 136 vrijednosti bojom LED dioda. Tako se dogodilo da je trenutno sve ostale operacije lakše izvesti s nizom LED dioda nego s okvirom, koji je teže obraditi. Takođe za ubuduće sam dodao parametar "dubine" snimanja (broj piksela od ivice ekrana, za prosečnu boju LED diode), ali je u konačnom podešavanju ispalo bolje bez njega.
5. Izvršite korekciju boje (balans bijele boje / balans boje)
Zidovi iza televizora su od drveta, drvo je žuto, tako da morate nadoknaditi žutilu.
var blue = 255.0f / (255.0f + blueLevelFloat) * pixelBuffer [k];
var zeleno = 255.0f / (255.0f + greenLevelFloat) * pixelBuffer;
var red = 255.0f / (255.0f + redLevelFloat) * pixelBuffer;
Općenito, u početku sam uzeo balans boja iz izvornog koda nekog open source editora, ali nije promijenio bijelo (bijelo je ostalo bijelo), malo sam promijenio formule, zapečatio se i dobio ono što mi je trebalo odmah: ako nivo komponente boje je negativan (objasniću kako - ova boja nedostaje), zatim dodajemo njen intenzitet i obrnuto. Za moje zidove je ispalo: RGB (-30.5.85).

U korekciji boja, izvodim i nivelisanje crne (crna dolazi oko 13,13,13 u RGB) jednostavnim oduzimanjem 13 od svake komponente.

6. Izvršite desaturaciju (smanjite zasićenost slike)
U konačnom podešavanju ne koristim desaturaciju, ali će možda biti potrebno u nekom trenutku, zapravo, čini boje "pastelnijim", poput Philipsovog ambilighta. Neću davati kod, samo pretvaramo iz RGB -> HSL, smanjujemo Saturation komponentu i vraćamo se nazad u RGB.
7. Deflicker
Desilo se da ulazna slika "treperi" - to je, pretpostavljam, posljedica konverzije u analogni signal. Prvo sam pokušao to riješiti na svoj način, zatim sam pogledao izvorni kod filtera Defliker koji se koristi u VirtualDub-u, prepisao ga u C# (bio je u C++), shvatio sam da ne radi, jer takav je utisak da se bori sa treperenjem između kadrova, na kraju sam iskombinovao svoje rešenje i ovaj defliker je dobio nešto čudno, ali radi bolje od očekivanog. Početni defliker je radio samo sa intenzitetom cijelog okvira, treba mi svaka LED dioda posebno. Originalni defliker je uporedio promenu intenziteta kao zbir, više mi se sviđa poređenje dužine vektora boje, Originalni defliker je uporedio deltu promene intenziteta u poređenju sa prethodnim kadrom, ovo se ne uklapa, i ja sam prepravio na prosječnu vrijednost intenziteta unutar prozora prethodnih kadrova. I mnoge druge sitnice, zbog čega je malo ostalo od početnog deflektora.
Glavna ideja: na osnovu prosječnog intenziteta prethodnih okvira, modificirati trenutni okvir ako njegov intenzitet nije veći od određenog praga (imam ovaj prag u konačnom podešavanju od 25), ako je prag premašen, onda je prozor reset, bez modifikacija.
Malo izmijenjen (za čitljivost van konteksta) moj kod deflickera:
Array.Copy (_leds, _ledsOld, _leds.Length); za (var i = 0; i< _leds.Length; i++) { double lumSum = 0; // Calculate the luminance of the current led. lumSum += _leds[i].R*_leds[i].R; lumSum += _leds[i].G*_leds[i].G; lumSum += _leds[i].B*_leds[i].B; lumSum = Math.Sqrt(lumSum); // Do led processing var avgLum = 0.0; for (var j = 0; j < LedLumWindow; j++) { avgLum += _lumData; } var avg = avgLum/LedLumWindow; var ledChange = false; if (_strengthcutoff < 256 && _lumData != 256 && Math.Abs((int) lumSum - avg) >= _strengthcutoff) (_lumData = 256; ledChange = true;) // Izračunajte faktor prilagođavanja za trenutni LED. var skala = 1,0; int r, g, b; if (ledChange) (za (var j = 0; j< LedLumWindow; j++) { _lumData = (int) lumSum; } } else { for (var j = 0; j < LedLumWindow - 1; j++) { _lumData = _lumData; } _lumData = (int) lumSum; if (lumSum >0) (skala = 1,0f / ((prosjek + lumSum) / 2); var filt = 0,0f; za (var j = 0; j< LedLumWindow; j++) { filt += (float) _lumData/LedLumWindow; } scale *= filt; } // Adjust the current Led. r = _leds[i].R; g = _leds[i].G; b = _leds[i].B; // save source values var sr = r; var sg = g; var sb = b; var max = r; if (g >max) max = g; ako (b> max) max = b; double s; if (skala * max> 255) s = 255,0 / max; else s = skala; r = (int) (s * r); g = (int) (s * g); b = (int) (s * b); // zadržati highlight double k; if (sr> _lv) (k = (sr - _lv) / (dvostruko) (255 - _lv); r = (int) ((k * sr) + ((1.0 - k) * r));) if ( sg> _lv) (k = (sg - _lv) / (dvostruko) (255 - _lv); g = (int) ((k * sg) + ((1.0 - k) * g));) if (sb> _lv) (k = (sb - _lv) / (dvostruko) (255 - _lv); b = (int) ((k * sb) + ((1.0 - k) * b));) _leds [i] = Boja .FromArgb (r, g, b); ) / * Faza temporalnog omekšavanja. * / if (ledChange || _softening == 0) nastavi; var diffR = Math.Abs ​​(_leds [i] .R - _ledsOld [i] .R); var diffG = Math.Abs ​​(_leds [i] .G - _ledsOld [i] .G); var diffB = Math.Abs ​​(_leds [i] .B - _ledsOld [i] .B); r = _leds [i] R; g = _leds [i] .G; b = _LED [i] .B; int sum; ako (razl< _softening) { if (diffR >(_omekšavanje >> 1)) (zbir = _leds [i] .R + _leds [i] .R + _ledsOld [i] .R; r = zbroj / 3;)) if (diffG< _softening) { if (diffG >(_omekšavanje >> 1)) (zbir = _leds [i] .G + _leds [i] .G + _ledsOld [i] .G; g = zbroj / 3;)) if (diffB< _softening) { if (diffB >(_omekšavanje >> 1)) (zbir = _leds [i] .B + _leds [i] .B + _ledsOld [i] .B; b = zbroj / 3;)) _leds [i] = Color.FromArgb (r, g, b); )
Neka _leds bude niz LED dioda klase Color, _ledsOld - vrijednosti okvira prije konverzije, LedLumWindow - širina prozora prethodnih okvira, za procjenu prosječne promjene intenziteta, u konačnom podešavanju imao sam prozor od 100 , što je jednako 3 sekunde pri 30 fps. _lumData - niz vrijednosti intenziteta prethodnih okvira.

Na kraju, ovaj mehanizam je dao čak i prijatne neočekivane posledice slici, teško je opisati kako se vizuelno percipira, ali je čini tamnijom gde je potrebno i svetlijom gde je potrebno, poput dinamičkog kontrasta. Kao rezultat toga, cilj deflikera se pokazao širokim, ne samo da eliminiše treperenje, već i da u potpunosti izbalansira izlaznu boju, kako u smislu komponenti tako iu vremenu unutar prozora.

8. Izglađivanje LED dioda od strane susjeda.
Generalno, u konačnom podešavanju, anti-aliasing mi se nije baš dopao, pa sam ga isključio, ali u nekim slučajevima može dobro doći. Ovdje jednostavno prosječujemo boju svake LED diode u odnosu na njene susjede.
var smothDiameter = 2 * _smoothRadius + 1; Array.Copy (_leds, _ledsOld, _leds.Length); za (var i = 0; i< _ledsOld.Length; i++) { var r = 0; var g = 0; var b = 0; for (var rad = -_smoothRadius; rad <= _smoothRadius; rad++) { var pos = i + rad; if (pos < 0) { pos = _ledsOld.Length + pos; } else if (pos >_ledsOld.Length - 1) (pos = pos - _ledsOld.Length;) r + = _ledsOld.R; g + = _ledsOld.G; b + = _ledsOld.B; ) _leds [i] = Color.FromArgb (r / smothDiameter, g / smothDiameter, b / smothDiameter); )
9. Sačuvajte trenutno stanje tako da nit koja šalje paket zgrabi i pošalje ga kontroleru pozadinskog osvjetljenja.
Namjerno sam podijelio proces obrade okvira i slanja paketa kontroleru: paketi se šalju jednom u određenom intervalu (kod mene je to 40ms), tako da arduino pjeva da obradi prethodni, jer se češće od 30ms guši, pa se ispostavilo da nismo direktno ovisni o hvatanju frejmova i da se ne miješamo u taj proces (a slanje paketa je također gubljenje vremena).
Malo o Arduinu
Ne možete samo uzeti i poslati ogroman paket Arduinu na seriji, jer će on ići dalje od zadanog HardwareSerial bafera i izgubit ćete njegov kraj.
Rješenje je prilično jednostavno: postavili smo veličinu HardwareSerial bafera na dovoljnu veličinu da stane cijeli poslani paket s nizom boja, za mene je to 410.
UI
Sam softver je implementiran kao win servis, u cilju konfigurisanja svih parametara + uključivanje/isključivanje napravio sam Web UI koji se povezivao sa servisom preko WebService na servisu. Konačni interfejs na ekranu mobilnog telefona izgleda ovako:
Rezultat
Kao rezultat toga, rezultat je ispunio sva očekivanja, a sada igrajući igrice na konzolama dobijam još više uranjanja u atmosferu igre.

Kao generalni rezultat rada, snimio sam video sa radom atmosfere prema mojoj shemi:

Ispitni subjekt 1: Pacifički rub, scena bitke u Šangaju, ovaj film je dobar za testiranje i demonstraciju, mnogo svijetlih scena i bljeskova, udara groma, itd.:

Test uzorak 2: Neki video sa MLP-a, spojen sa YouTube-a, veoma je pogodan za testiranje scena sa jarkim bojama (sviđale su mi se pruge), kao i za brzo menjanje scena (na kraju prikaza možete videti efekte kašnjenje, vidljivo samo na videu, kada se ovo ne primjećuje u stvarnom gledanju, pokušao sam izmjeriti kašnjenje sa videa - ispalo je 10-20ms):

I na kraju, vrijedno je napomenuti o potrošnji resursa iz HTPC-a:
HTPC Imam ASRock Vision 3D na i3, usluga atmosfere troši 5-10% CPU-a i 32MB RAM-a.

Hvala vam na pažnji, stvarno se nadam da će moj članak nekome pomoći.

Top srodni članci