Как передать корректно масштабируемые данные из приложения Blynk?
Переменная типа byte Time
Слайдер значения 0,00 до 2,00
Decimals #.##
Включаю кнопку Mapping (без нее вообще только 0,1,2 передаются)
На слайдере все красиво… Значения слайдера отображаются до сотых долей. Открываю монитор порта Arduino IDE, смотрю, как изменяется переменная Time… А там какой-то ужас… Переменная масштабируется не пропорционально от 0 до 255, а как попало… Никакой логики не вижу.
Пробовал переменной присвоить тип float, не получилось…
Как получить значения переменной корректно такими, как на слайдере?
I have always found it more accurate to use the Arduino map()
function on the device script instead of in the widget.
Я всегда считал более точным использовать функцию Arduino map () на скрипте устройства, а не в виджетах.
https://www.arduino.cc/reference/en/language/functions/math/map/
А покажите код как вы считываете из пина?
byte temp_delta; // допустимые отклонения, дельта 'C
char auth[] = "**";
char ssid[] = "speakme";
char pass[] = "***";
BLYNK_CONNECTED()
{
Blynk.syncAll();
}
BLYNK_WRITE(V11){temp_delta = param.asInt();} // слайдер дельта 'C
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
timer.setInterval (500, prints); // serial
}
void loop()
{
Blynk.run();
timer.run();
}
}
void prints()
{
Serial.print("temp_delta = ");
Serial.println(temp_delta);
}
На скрине плавно двигаю слайдер от 0 до 2… Программно ничего не масштабирую. Странные данные.
Извиняюсь, не разобрался пока как тут сообщения форматировать…
То есть 241 это 0 на слайдере, а 15 это 2…
1 Like