Změna rozsahu hodnoty (mapování hodnot)¶
Co dělá: Přepočítá X z intervalu [VSTUPNÍ MINIMUM, VSTUPNÍ MAXIMUM] do nového intervalu [VÝSTUPNÍ MINIMUM, VÝSTUPNÍ MAXIMUM] lineárně. Lze vybrat zaokrouhlení na celé číslo a limitace hodnot na rozsah [VÝSTUPNÍ MINIMUM, VÝSTUPNÍ MAXIMUM].

Vstupy¶
- VSTUPNÍ HODNOTA
- VSTUPNÍ MINIMUM, VSTUPNÍ MAXIMUM
- VÝSTUPNÍ MINIMUM, VÝSTUPNÍ MAXIMUM
Výstup¶
- ČÍSLO
-
Kód uvnitř bloku:
-
Micropython kód pro přepočet čísel s desetinou čárkou :
def convert_float(x, in_min, in_max, out_min, out_max, lim=1): if lim == 0: return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min else: if out_min > out_max: return min(max(out_max, (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min), out_min) else: return max(min(out_max, (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min), out_min) -
Micropython kód pro přepočet celých čísel :
def convert_int(x, in_min, in_max, out_min, out_max, lim=1): if lim == 0: return int((x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min) else: if out_min > out_max: return int(min(max(out_max, (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min), out_min)) else: return int(max(min(out_max, (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min), out_min))
- Příklad kdy se hodnota analogového vstupu přepočítává na milivolty. Rozsah analogového vstupu je 0 - 3.6V, výstupní hodnota z převodníku je ale 0 - 4096 a tu potřebujeme přepočítat zpět na 0 - 3600mV.

Tipy¶
- Pokud
VSTUPNÍ MINIMUM == VSTUPNÍ MAXIMUM, výpočet nedává smysl (dělení nulou). - Ve variantě s limitem (
lim=1) je výstup saturován do výstupního rozsahu i při obráceném směru (out_min > out_max).