Dotaz: Dobrý den, měl bych dotaz, zda jste se někdy nezabývali ovládáním serva v závislosti na naměřené teplotě.
Řekněme, že máme třeba proměnnou float temp;, ve které je uložená teplota.
Tuto teplotu potřebujete přepočítat na rozsah, který je možné poslat do Servo motoru. Většinou mají servomotory rozsah vstupních hodnot 0-180.
Řekněme si, že budeme chtít zobrazit teploty 0 až 30°C. Potom tedy musíme nějak převést rozsah 0-30 na rozsah 0-180.
K tomu slouží funkce map (https://www.arduino.cc/reference/en/lan ... /math/map/).
Kód: Vybrat vše
int servoVal = map(value, fromLow, fromHigh, toLow, toHigh);
- value - vstupní hodnota (u nás teplota)
- fromLow - spodní hranice původního rozsahu
- fromHigh - horní hranice původního rozsahu
- toLow - spodní hranice nového rozsahu
- toHigh - horní hranice nového rozsahu
Kód: Vybrat vše
float temp = getTemp(); // tento řádek zastupuje získání teploty ze senzoru
int servoVal = map(temp, fromLow, fromHigh, toLow, toHigh);
servo.write(servoVal);
Kód: Vybrat vše
float temp = getTemp(); // tento řádek zastupuje získání teploty ze senzoru
int iTemp = constrain(temp, 0, 30);
int servoVal = map(iTemp, fromLow, fromHigh, toLow, toHigh);
servo.write(servoVal);