Személyes oldal
Az a törekvés, hogy a DMU megépítésének kódját optimalizálni lehessen, arra késztette, hogy használják a humán modell színeinek egy gépi feldolgozására való képességét.
A kész megvalósítás keresés több eredményt hozott, elsősorban a C-n, de nem is ad pozitív eredményt.
A fényesség és a telítettség túlságosan éles vezérlése a tartomány egyik szélén és abszolút nulla a reakció közepén és a másik oldalon.
Kidolgoztam a saját átalakítási funkcióját a HSV-hez az RGB-hez, ami megszüntette ezeket a bosszantó hibákat.
255 árnyalat, 255 telítettség, 255 fényerősség.
Adja meg a HSV modell három paraméterét - színárnyalat, telítettség és fényerő.
A funkció három értéket ad vissza - az RGB-diódák fényerejét.
És elég gyorsan dolgozik. 16 diódát dolgoztam fel egyszerre, nem észleltek féket!
Nos, itt vannak olyan képletek, amelyeknél mindezt figyelembe kell venni!
Minden H ∈ [0 °, 360 °] árnyalat esetén az S ∈ [0, 100] telítettség és a V ∈ [0, 100] fényerő:
(256 paramétert kellett újraépítenie, így kényelmesebb, nem kell ellenőriznie a helyességet - teljes bájtot használunk)
- ha igen
- ha igen
- ha igen
- ha igen
- ha igen
- ha igen
A vörös, zöld és kék RGB csatornák vett értékeit százalékban kell kiszámítani.
Ahhoz, hogy összhangba hozzák őket a népszerű COLORREF nézettel, meg kell szorozni mindegyiket 2,55-ös értékkel.
A HSV minden egyes színének egész számozásával RGB-ben megfelelő színt kapunk.
Az ellenkező azonban nem igaz: az RGB egyes színeit nem lehet HSV-ben kifejezni,
így az egyes komponensek értéke egy egész szám.
Valójában ezzel a kódolással csak az RGB színtér 1/256 része áll rendelkezésre.
Ahhoz, hogy a szivárvány túlcsordulhasson, elegendő egy olyan ciklust készíteni, amelyben a Hue paramétert 0-ról 255-re állítja (színárnyalat).
És a kapott RGB értékek a LED-ek PWM-re vannak állítva.
Minél kisebb a ciklus késése, annál gyorsabban változnak a színek.
Az ellenkező irányú irizáló túlcsordulásoknál elegendő a ciklus visszafordítása, amelyben az értékek csökkentek.
A funkció nagyon hasznos az emberi szempontból.
Könnyebbé tennünk egy halványkék világos színt: (színárnyalat = 128 - színszám, sat = 128 - telítettség, val = 255 - fényerő),
mint ugyanaz, mint a standard RGB: (R = 128, G = 200, B = 255).
Végül is, amikor meghatároztuk a színt, ne mondjuk, hogy ilyen és ilyen kapcsolatból vörös, zöld és kék áll.
Egyszerűen beszélünk - élénkvörös, halványsárga, világoszöld.
Ennek a funkciónak számos hatása lehet.
Alapján a standard RGB - a szivárvány az egyik irányban, vagy a másik, villogó színek, a hatás a strobe.
Nem láttam fényességszabályozást, sokkal kevésbé telítettséget.
De a HSV-vel egy nagyon különböző kalikó!
A szín forgatásán kívül (Színárnyalat) is módosíthatja az aktuális árnyalat (Value) fényerejét.
Például a piros és narancssárga, majd narancssárga, majd sárga.
Nagyon érdekes a telítettség használata.
Hasonló hatást érhet el, csak a szín nem fog felcsillanni és kimennek, de fehérbe áramlik és nyilvánvalóvá válik.
A fehér színek közötti átmenetet át lehet alakítani.
Gyorsan beállíthatja a teljes fényerőt vagy a telítettséget.
Sokkal könnyebb írni az RGB paramétereket kiszámító kódot.
Gyakorlatilag bármilyen hatáshoz 1-2 egymást követő ciklus elegendő.
Mi az alapvető különbség a funkciómban?
Figyelembe veszi a LED-ek nem linearitását.
A táblázatok azokat az adatokat írják le, amelyek alatt minden "gyönyörűen" működik.
Ez sok kísérlet eredménye.
Senki sem akadályozza meg, hogy mindent magadra állítson.
Módosítsa a szín értékét a ciklusban, vegye figyelembe az eredményt, és javítsa ki a színtáblázatban szereplő értékeket.
Ugyanez a fényerő és a telítettség.
Úgy gondolom, hogy a kód tovább optimalizálható.
Az is kívánatos, hogy Ön helyett PWM-t használjon, sokkal kevesebb energiát fogyaszt.
Próbáljon meg alkalmazni a különböző színsémákban, azonnal felbecsülni a könnyű használatot!
A fényerő diagramja minden lépésnél a szem lineáris érzékeléséhez