TapHome

Kolory

Funkcje kolorów w skryptach TapHome — HSVTORGB i RGBTOHSV — oraz typy wartości rgbcolor i hsvcolor do sterowania światłami RGB ze skryptów Packet parser i Modbus.

Funkcje kolorów przeliczają między modelem HSV — odcień, nasycenie i wartość (jasność) — a modelem RGB z kanałami czerwonym, zielonym i niebieskim. Kolorowe światło TapHome pracuje z odcieniem i nasyceniem; wiele urządzeń sterowanych ze skryptów Packet parser lub Modbus oczekuje natomiast wartości czerwonej, zielonej i niebieskiej. Obie funkcje działają w każdym skrypcie i wymagają Core 2023.1 lub nowszego (w kanale Next Core 2022.3, kompilacja 27019).

HSVTORGB

HSVTORGB konwertuje kolor podany odcieniem, nasyceniem i wartością na wartość rgbcolor z kanałami czerwonym, zielonym i niebieskim od 0 do 255.

1
HSVTORGB(hue, saturation, value)
NazwaTypOpis
hueliczbaKąt koloru w stopniach, 0 – 360 (0 czerwony, 120 zielony, 240 niebieski).
saturationliczba0 – 1. 0 to biel lub szarość, 1 pełny kolor.
valueliczbaJasność, 0 – 1.

Zwraca — rgbcolor z właściwościami RED, GREEN i BLUE, każda zaokrąglona do liczby całkowitej 0 – 255.

Uwagi — Wejścia nie są ograniczone do swojego zakresu. Utrzymuj saturation i value między 0 a 1, w przeciwnym razie kanały wyjdą poza zakres 0 – 255.

Przykład

VAR green := HSVTORGB(120, 1, 1);
green.GREEN;
# Result: 255

Przykład — skrypt zapisu światła RGB przez HTTP

W skrypcie zapisu kolorowego światła przekaż wartości odcienia (Hd) i nasycenia (Sa) światła, a jasność trzymaj osobno. Tutaj są to zmienne lokalne, aby przykład działał samodzielnie:

VAR hue := 30;
VAR saturation := 1;
VAR color := HSVTORGB(hue, saturation, 1);
"red=" + color.RED + "&green=" + color.GREEN + "&blue=" + color.BLUE;
# Result: "red=255&green=128&blue=0"

Zobacz też — RGBTOHSV, SENDHTTPREQUEST.

RGBTOHSV

RGBTOHSV konwertuje kanały czerwony, zielony i niebieski (0 – 255) na wartość hsvcolor z odcieniem w stopniach oraz nasyceniem i wartością od 0 do 1.

1
RGBTOHSV(red, green, blue)
NazwaTypOpis
red, green, blueliczba0 – 255. Każda jest konwertowana na liczbę całkowitą w tym zakresie.

Zwraca — hsvcolor z HUE (0 – 360, z częścią ułamkową), SATURATION (0 – 1) i VALUE (0 – 1). Dla kolorów szarych, w których wszystkie kanały są równe, HUE i SATURATION wynoszą 0.

Przykład — odczyt odcienia światła, które raportuje wartość czerwoną, zieloną i niebieską

VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.HUE);
# Result: 30
VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.SATURATION * 100) / 100;
# Result: 1

Wartości rgbcolor i hsvcolor

rgbcolor i hsvcolor to typy wartości zwracane przez funkcje kolorów; ich właściwości można odczytywać i zapisywać.

TypWłaściwośćZakresUwaga
rgbcolorRED, GREEN, BLUE0 – 255Zapis przechowuje bajt: wartości powyżej 255 przekręcają się od zera.
hsvcolorHUE0 – 360Zapis przechowuje bajt, więc odcień powyżej 255 przekręca się od zera — hsv.HUE := 300 daje 44. Zamiast tego przekaż odcień do HSVTORGB.
hsvcolorSATURATION, VALUE0 – 1Liczby dziesiętne.

Obiema nazwami typów można zadeklarować zmienną:

rgbcolor colour := HSVTORGB(240, 1, 0.5);
colour.BLUE;
# Result: 128

Zobacz też — Typy danych, Zmienne i stałe.