• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

"ползунок" в асинхронном режиме

SergNed

New member
ESP32:Примеры/Создание веб-сервера на базе ESP32 при помощи файлов из файловой системы (SPIFFS)
-по этому примеру хочу прикрутить работу ползунка с извлечением его данных в асинхронном режиме на esp32.


Но следующие объявление в setupe не работает и не принимает запрос

server.on("/?value=", HTTP_GET, [](AsyncWebServerRequest *request)

{

pos1 = header.indexOf('=');

pos2 = header.indexOf('&');

valueString = header.substring(pos1+1, pos2);

// Задаем скорость мотора:

if (valueString != "0") {

dutyCycle = map(valueString.toInt(), 25, 100, 200, 255); }

});
 

dzanis

New member
C++:
// на веб страничке надо так отправлять
//  значение ползунка в переменной val
//var xmlhttp  new XMLHttpRequest();
//xmlhttp.open('GET', 'dutyCycle?value='+val,true);
//xmlhttp.send();
// uri должен быть просто "/dutyCycle"
server.on("/dutyCycle", HTTP_GET, [](AsyncWebServerRequest *request)
{
valueString = request->getParam("value")->value();// получить значение из параметра value
// Задаем скорость мотора:
if (valueString != "0") {
dutyCycle = map(valueString.toInt(), 25, 100, 200, 255); }
request->send(200); // ответ что запрос принят
});
 

dzanis

New member
Пожалуйста.Просто надо брать уже готовое и добавлять к нему свой код.Да по ссылке аналогично но весь пример целиком,копируйте и пользуйтесь.
 

SergNed

New member
мои реалии пока всё таки не работают:
server.on("/dutyCycle", HTTP_GET, [](AsyncWebServerRequest *request)
{
valueString = request->getParam("value")->value();// получить значение из параметра value
// Задаем скорость мотора:
if (valueString != "0") {
dutyCycle = map(valueString.toInt(), 25, 100, 200, 255); }
request->send(200); // ответ что запрос принят
});

//на веб страничке

<input type="range" min="0" max="100" step="25" id="motorSlider" onchange="motorSpeed(this.value)" value="" + valueString + ""/> <script> function motorSpeed(val) {
var xmlhttp new XMLHttpRequest();
xmlhttp.open('GET', 'dutyCycle?value='+val,true);
xmlhttp.send(); } </script>
 

dzanis

New member
Ну тут без всего скетча не понятно.Поставьте вывод в сериал и смотрите где именно не работает.
C++:
server.on("/dutyCycle", HTTP_GET, [](AsyncWebServerRequest *request)
{
valueString = request->getParam("value")->value();// получить значение из параметра value
Serial.println(valueString);
// Задаем скорость мотора:
if (valueString != "0") {
dutyCycle = map(valueString.toInt(), 25, 100, 200, 255); }
Serial.printf("dutyCycle:  %d\n", dutyCycle);
request->send(200); // ответ что запрос принят
});
И какой-то странный маппинг dutyCycle = map(valueString.toInt(), 25, 100, 200, 255);
Логично было-бы map(valueString.toInt(), 0, 100, 0, 255); это конечно если разрешение шима 255
Как настроены ledcSetup,ledcAttachPin ?
В общем без всего кода тут трудно помочь.
 

SergNed

New member
заработало в таком виде:
<script> function motorSpeed(val) {
var xhr =new XMLHttpRequest();
xhr.open('GET', "/dutyCycle?value="+val,true);
xhr.send();
} </script>

поначалу автоматически копируя код не было знака "=" в var xhr =new XMLHttpRequest();
 

SergNed

New member
ещё вопрос: в коде объявляю кнопку и далее
она обрабатывается в функции change1 с аргументом.
Где здесь ошибка?

<p><a><button onclick="change1("747")"><div id="747">%747%</div></button></a>


<script>
function change1(val) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(val).innerHTML=this.responseText;
}
};
xhttp.open("GET", "/val", true);
xhttp.send();
}
</script>
 

SergNed

New member
ещё вопрос: в коде объявляю кнопку и далее
она обрабатывается в функции change1 с аргументом.
Где здесь ошибка?

<p><a><button onclick="change1("747")"><div id="747">%747%</div></button></a>


<script>
function change1(val) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(val).innerHTML=this.responseText;
}
};
xhttp.open("GET", "/val", true);
xhttp.send();
}
</script>
нашёл:
xhttp.open("GET", "/"+val, true); правильно так
 

SergNed

New member
не всё можно отладить в браузере .
с помощью (SPIFFS) хотя мне кажется это не очень удобно.Удобнее путём создании константы-странички html
 
Сверху Снизу