Управление двигателем постоянного тока с помощью Arduino Uno WiFi Rev2 Html Код слайдера

Я хотел бы управлять своим двигателем постоянного тока с помощью Arduino Uno WiFi Rev2 с помощью ползунка диапазона html. Теперь я могу просто отлично управлять скоростью и направлением вращения двигателей с помощью кнопок. Ниже приведен мой код того, что я сделал до сих пор.

client.println("<style>");
client.println(".class-name{writing-mode: bt-lr; webkit-appearance: slider-vertical;width: 8px;height: 175px;padding: 0 5px;}</style>");
client.println("<center><input type=\"range\" class=\"class-name\" orient=\"vertical\" id=\"range\" min=\"0\" max=\"255\" step=\"0\" onchange=\"motor1(this.value)\" value=\"0\"></center>");

Приведенный ниже код является текущим кодом кнопки. Мне нужен приведенный ниже код, который будет использоваться приведенным выше кодом слайдера:

if (currentLine.endsWith("GET /MONFWD")) {
digitalWrite(MOTOR_A_ONE, HIGH);  // Устанавливает прямое направление канала A
digitalWrite(MOTOR_A_TWO, HIGH);  // ВКЛЮЧИТЬ
delay(1000);                      // ЗАДЕРЖКА ПЕРЕД ОТПУСКАНИЕМ ТОРМОЗА
digitalWrite(MOTOR_A_TWO, LOW);   // Отключить тормоз для канала A
analogWrite(MOTOR_A_ENGAGE, 255); // Вращает двигатель вперед по каналу A на полной скорости

, 👍1

Обсуждение

И в чем заключается ваш вопрос? Ты ни о чем таком не спрашивал. Пожалуйста, опишите, в чем именно заключается ваша проблема при написании необходимого кода., @chrisl


1 ответ


2

Вот пример слайдера, который изменяет скорость сервопривода, В коде HTML-страницы вы должны добавить это:

  <div class="slidecontainer">
  <input type="range" min="0" max="1023" value="512" class="slider" id="myRange">
  <p>Value: <span id="demo"></span></p>
</div>

<script>
var slider = document.getElementById("myRange");

var output = document.getElementById("demo");

output.innerHTML = slider.value;

slider.onchange = function() {
  output.innerHTML = this.value;
  pwm_change(output.innerHTML);

}
function pwm_change(val) {
  var xhttp = new XMLHttpRequest();
  xhttp.open("GET", "setPWM?PWMval="+val, true);
     xhttp.send();
}
</script>
</p> </div> <сценарий> var slider = document.getElementById("MyRange"); var output = document.getElementById("демо"); output.innerHTML = ползунок.значение; slider.onchange = функция() { output.innerHTML = this.value; pwm_change(output.innerHTML); } функция pwm_change(val) { var xhttp = новый XMLHttpRequest(); xhttp.open("ПОЛУЧИТЬ", "setPWM?PWMval="+val, true); xhttp.отправить(); } </скрипт>

В arduino вы должны определить обработчик следующим образом:
void handle_pwm() {
 String  pwm_val = server.arg("PWMval"); // reading from slider on html pagae

 Serial.print("slider val: ");
 Serial.println(pwm_val);
int pwm_value = map(pwm_val.toInt(), 0, 1023, 0, 180); 
Servo.write(pwm_value);

server.send(200,"text/plane","0"); // handling the webpage update

}
void обработка_pwm() { Строка pwm_val = server.arg("PWMval"); // чтение из слайдера на HTML-странице Serial.print("значение ползунка: "); Serial.println(pwm_val); int pwm_value = карта(pwm_val.toInt(), 0, 1023, 0, 180); Сервопривод.запись (pwm_value); server.send(200,"текст / плоскость","0"); // обработка обновления веб-страницы }

И определите сервопривод и обработчик в разделе Setup ():
void setup(void){
....
Servo.attach(MotorPin,1000,2000);
server.on("/setPWM", handle_pwm);
....
 }
настройка void(void){ .... Сервопривод.крепление (штифт двигателя, 1000, 2000); server.on("/setPWM", handle_pwm); .... }
,

Я не использую библиотеку servo.h...Я использую экран двигателя, который уже работает с кнопками .... если я проигнорирую аргументы servo.write и servo .attach, код должен работать нормально, правильно?, @PilotinControl

Также приведенный выше код несовместим с Arduino Uno WiFi Rev 2. Он не использует server.on или server.arg, @PilotinControl

никакой разницы, вы можете следовать приведенному выше примеру как для motor shield, так и для платы Uno WIFI, просто замените команду servo.write() на motor.setSpeed() для изменения скорости двигателя постоянного тока в motor shield.просто нужно сопоставить значение ползунка (0-1023) с диапазоном оборотов вашего двигателя, который обычно равен (0-255). И, используя библиотеки, такие как WiFiNINA , вы можете иметь аргументы server.xyz для Uno Wifi board so., @M sayeh

Я использую библиотеку WiFiNINA, и для server.arg и server.on нет эквивалентов, кроме client.read и client.println. Также независимо от того, куда я помещаю функцию handle_pwm, она выдает ошибки. Ползунок работает нормально, так как я изменил там значения. Его функция выстраивается в линию с ползунком, который не работает. В настоящее время у меня есть 3 кнопки, которые работают. Мотор FWD, MotorREV и MotorBrake работают нормально. Мне просто нужен ползунок, чтобы плавно регулировать скорость двигателя, @PilotinControl

приведенный выше пример изначально написан для платы Nodemcu, В нем используются гораздо более простые библиотеки для анализа http-запросов, такие как библиотека веб-сервера ESP8266, включая команду server.arg и т. Д... для Arduino Uno WiFi Rev 2 он, по-видимому, не такой разнообразный, как nodemcu, поэтому вам следует обрабатывать http-запросы с помощью таких команд, как client.read() , currentLine.EndsWith() и эквивалентов, подобных этому., @M sayeh