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

Kapcsolódó cikkek