Подскажите , пожалуйста, как я могу двигать сервопривод плавно с помощью джойстика так , чтобы сервопривод поворачивался в ту сторону , куда смотрел джойстик
Читаем тут про сервопривод, пробуем код servo_example.ino (без джойстика). Если все работает, значит подключено правильно и пора переходить к обработке джойстика. Возьмем показания y и приведем к формату, удобному для сервы (чтобы не выйти за пределы): Код (C++): byte value = map(y, 0, 1023, 0, 180); В строке Код (C++): myservo.write(90); вместо числа 90 вставляем обработанное значение value.
Работает , но есть проблема - работает плохо , слишком резко , как будто джойстик с большой чувствительностью . Подскажите, пожалуйста, в чем дело? Код (C++): #include <Servo.h> int y =A1 ;// джойстик ось у Servo servo; void setup (){ servo.attach(9); pinMode(y,INPUT); } void loop(){ int y = analogRead(A1); y = map (y,0,1023,0,180); servo.write(y); } P.s с byte выдает ошибку , а если убрать int то и вовсе не работает
С джойстика данные идут прям на серву. Чтобы это было плавно нужен фильтр. Цифровой или аналоговый. Тут и далее есть объяснение, задача понять не формулы, а смысл. Когды вы джойстиком меняете значение на серву данные должны идти "сглаженные".
Посмотри как изменяется показания сопротивления на джойстике. Там очень маленький угол отклонения и резкое возростание/убывание сопротивления. Ищи джойстики от RC самолетов или вертушек. Самый классный джойстик это былу помоему у дремкаст кубе от нинтенда. Там джойстик на датчиках холла.