Я пытаюсь сопоставить джойстик с сервоприводом, но мне нужно, чтобы сервопривод был равен 0, когда джойстик находится во множественном числе. И до 180 когда радость идет вперед или назад
Я пытаюсь сопоставить джойстик с сервоприводом, но мне нужно, чтобы сервопривод был равен 0, когда джойстик находится во множественном числе. И до +180, когда радость идет вперед или назад.
Я просто не могу понять, как соотносится или настраивается код для этой части. Я помню, что видел это раньше, но мои навыки Google подводят меня, и я, кажется, не могу найти его снова. Спасибо
@hendr13x, 👍1
Обсуждение2 ответа
Вы можете использовать функцию карты
, см. раздел Функция карты Arduino.
Таким образом, в вашем случае, предполагая значение
0..1023, исходящее от аналогового вывода, где 0 должно быть сопоставлено с -180 и 1023 с +180, вы получаете
int mappedValue = map(value, 0, 1023, -180, 180);
(обратите внимание, что я предполагаю, что вы имеете в виду -180, когда назад, +180, когда вперед).
ОБНОВЛЕНИЕ
Похоже, что значение 0 (назад) должно быть сопоставлено с 180, 512 (нейтральное) - с 0 и 1023 (прямое) - с 180 (снова).
Для этого вам понадобятся две карты в зависимости от значения:
int mappedValue = 0;
if (value < 512) // Backwards
{
mappedValue = map(value, 0, 511, 180, 0);
}
else // Forward
{
mappedValue = map(value, 512, 1023, 0, 180);
}
Я пытаюсь заставить сервопривод двигаться на + 180, когда радость идет вперед. А также +180, когда радость отступает. И сервомотор, чтобы сидеть на 0, когда радость в сети. Используемый сервопривод имеет диапазон от 0 до 180, @hendr13x
и каковы значения джойстика в прямом, нейтральном и обратном положениях?, @Michel Keijzers
Значения джойстика равны 0 для "назад". 1023 для "вперед". Спасибо, @hendr13x
Попробуйте вот это, хотя другие ответили вам правильно :
#include <Servo.h>
Servo myservo;
int potpin = 1;
int val;
void setup () {
myservo.attach(9);
}
void loop () {
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 360);
myservo.write(val);
delay(20);
}
Подключите сигнальный провод вашего серводвигателя к ШИМ контакту № 9 Arduino Подключите выход вашего джойстика к контакту A1 вашего arduino
На самом деле я не уверен ни в одной из этих строк, и я забыл правильную форму, если она не сработала, измените эту строку :
val = map(val, 0, 1023, 0, 360);
К этому :
val = map(val, 0, 1023, -180, 180);
Я думаю что оба они работают
Удачи вам
- Эмулировать Джойстик
- Как я могу управлять 2 сервоприводами отдельно с помощью джойстика на ATtiny85?
- Tower Pro MG996R сервопривод с высоким крутящим моментом 180 °, управляющий с помощью Arduino
- Как заставить сервопривод вращаться на угол больше 180°
- Пповорот сервопривода на 90 градусов
- Как синхронно управлять двумя сервоприводами?
- Ошибка "Servo" does not name a type
- Библиотека плавного сервоуправления
это простая арифметическая задача ... преобразуйте
-180 0 180
в180 0 180
, @jsotolaджсотола. Я знаю, что это должно быть что-то простое. Но, похоже, не могу заставить его работать. Любая помощь в том, чтобы на самом деле это сделать, была бы признательна, @hendr13x
Вы можете сопоставить значения от -180 до 180, а затем принять их абсолютное значение. Я уверен, что для этого есть функция, @chrisl
используйте что-то вроде этого " если (вал < 0) вал = 0 - вал;`, @jsotola