Colori
Funzioni di colore degli script TapHome — HSVTORGB e RGBTOHSV — e i tipi di valore rgbcolor e hsvcolor usati per controllare le luci RGB dagli script Packet parser e Modbus.
Le funzioni di colore convertono tra il modello HSV — tonalità, saturazione e valore (luminosità) — e il modello RGB con i canali rosso, verde e blu. Una luce a colori TapHome lavora con tonalità e saturazione; molti dispositivi comandati da script Packet parser o Modbus si aspettano invece rosso, verde e blu. Entrambe le funzioni funzionano in ogni script e richiedono Core 2023.1 o più recente (sul canale Next Core 2022.3, build 27019).
HSVTORGB
HSVTORGB converte un colore dato da tonalità, saturazione e valore in un valore rgbcolor con i canali rosso, verde e blu da 0 a 255.
| |
| Nome | Tipo | Descrizione |
|---|---|---|
hue | numero | Angolo del colore in gradi, 0 – 360 (0 rosso, 120 verde, 240 blu). |
saturation | numero | 0 – 1. 0 è bianco o grigio, 1 il colore pieno. |
value | numero | Luminosità, 0 – 1. |
Valore restituito — rgbcolor con le proprietà RED, GREEN e BLUE, ciascuna arrotondata a un numero intero 0 – 255.
Note — Gli ingressi non sono limitati al loro intervallo. Mantieni saturation e value tra 0 e 1, altrimenti i canali escono dall’intervallo 0 – 255.
Esempio
VAR green := HSVTORGB(120, 1, 1);
green.GREEN;
# Result: 255Esempio — script di scrittura di una luce RGB tramite HTTP
Nello script di scrittura di una luce a colori passa i valori di tonalità (Hd) e saturazione (Sa) della luce e tieni separata la luminosità. Qui sono variabili locali, così l’esempio funziona da solo:
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"Vedi anche — RGBTOHSV, SENDHTTPREQUEST.
RGBTOHSV
RGBTOHSV converte i canali rosso, verde e blu (0 – 255) in un valore hsvcolor con la tonalità in gradi e saturazione e valore da 0 a 1.
| |
| Nome | Tipo | Descrizione |
|---|---|---|
red, green, blue | numero | 0 – 255. Ciascuno viene convertito in un numero intero in questo intervallo. |
Valore restituito — hsvcolor con HUE (0 – 360, con parte decimale), SATURATION (0 – 1) e VALUE (0 – 1). Per i colori grigi, in cui tutti i canali sono uguali, HUE e SATURATION sono 0.
Esempio — leggere la tonalità di una luce che riporta rosso, verde e blu
VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.HUE);
# Result: 30VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.SATURATION * 100) / 100;
# Result: 1Valori rgbcolor e hsvcolor
rgbcolor e hsvcolor sono i tipi di valore restituiti dalle funzioni di colore; le loro proprietà si possono leggere e scrivere.
| Tipo | Proprietà | Intervallo | Nota |
|---|---|---|---|
rgbcolor | RED, GREEN, BLUE | 0 – 255 | La scrittura salva un byte: i valori oltre 255 ricominciano da zero. |
hsvcolor | HUE | 0 – 360 | La scrittura salva un byte, quindi una tonalità oltre 255 ricomincia da zero — hsv.HUE := 300 dà 44. Passa invece la tonalità a HSVTORGB. |
hsvcolor | SATURATION, VALUE | 0 – 1 | Numeri decimali. |
Entrambi i nomi di tipo possono dichiarare una variabile:
rgbcolor colour := HSVTORGB(240, 1, 0.5);
colour.BLUE;
# Result: 128Vedi anche — Tipi di dati, Variabili e costanti.