Pokud se do toho pustíš, nepoužívej funkci map(), která se tady nabízí. Je špatně napsaná.
Doporučuji místo toho:
náhrada za funkci map:
int Range(int _x, int x1, int x2, int y1, float y2) // jedna promenna musi byt float kvuli float vysledku
{
float k = (y2-y1)/(x2-x1);
int _y = round(k*(_x-x1)+y1);
return _y;
}
lepší výsledky bez zaokrouhlení
pro ESP8266 stačí typ proměnné int, pro 8mi bitové AVR328 musí být long
int improved_map(int value, int minIn, int maxIn, int minOut, int maxOut)
{
const int rangeIn = maxIn - minIn;
const int rangeOut = maxOut - minOut;
const int deltaIn = value - minIn;
// konstanty v pevne des.carce davaji lepsi vysledek pri deleni a zaokrouhlovani
constexpr int fixedHalfDecimal = 1;
constexpr int fixedDecimal = fixedHalfDecimal * 2;
return ((deltaIn * rangeOut * fixedDecimal) / (rangeIn) + fixedHalfDecimal) / fixedDecimal + minOut;
}