Управление двигателем постоянного тока с помощью 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 на полной скорости
@PilotinControl, 👍1
Обсуждение1 ответ
Вот пример слайдера, который изменяет скорость сервопривода, В коде 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
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Вопрос о различных способах подключения платы драйвера двигателя L298N к Arduino и двигателям и их питания.
- Несколько клиентских серверов через Wi-Fi
- WebSocketsServer.h: No such file or directory
- Обратное вращение шагового двигателя
- Как получить данные из базы данных моего сервера в переменную в моем Arduino?
- Неиспользуемые контакты в Arduino L293D motor shield?
И в чем заключается ваш вопрос? Ты ни о чем таком не спрашивал. Пожалуйста, опишите, в чем именно заключается ваша проблема при написании необходимого кода., @chrisl