Сегодня я решил попробовать управлять сервоприводом при помощи джойстика, собрав простую схемку на базе Arduino Uno.
Что нам потребуется
- Arduino Uno
- JoyStick
- Micro Servo SG90 сервомотор;
- Маленький бредборд;
- Соединительные провода;
Исходный код
#include <Servo.h>
int joyX=0;
int angl=0;
Servo myservo;
void setup()
{
myservo.attach(9);
pinMode(joyX,INPUT);
Serial.begin(9600);
}
void loop()
{
int val = (analogRead(joyX)/64)-8;
if (val > 0) {
angl=angl+abs(val);
}
else {
if (val < 0) {
angl=angl-abs(val);}
}
if (angl < 0) angl = 0;
if (angl > 180) angl = 180;
Serial.print("Power: ");
Serial.println(val);
Serial.print("Angle: ");
Serial.println(angl);
myservo.write(angl);
int spd = 500;
if (val != 0) {
spd = 600/abs(val);
}
Serial.print("Speed: ");
Serial.println(spd);
Serial.println("-----------");
delay(spd);
}
Как это работает
Управлять сервоприводом оказалось просто (с использованием библиотеки). Мы просто вызываем функцию write и значение угла поворота в градусах. А вот само значение угла мы будем изменять динамически с помощью джойстика.
В цикле считывается значение с аналогового входа (изменяется от 0 до 1023 в зависимости от положения джойстика), я делю это значение, чтобы уменьшить шаг на 64 и вычитаю 8, чтобы усреднить. Теперь мы будем иметь значение от 7 до -8. Затем на это значение я изменяю переменную, хранящую угол поворота. Также изменяю задержку в зависимости от этого значения. Чем больше отклонение, тем меньше задержка (быстрее происходит вращение).
Подключение
- С Arduino берём +5 В на одну сторону бредборда (красный првоод);
- Чёрный провод идёт с GND на другую сторону бредборда;
- Сигнальный пин – девятый, зелёный провод, идёт на сервомотор (жёлтый шлейф);
- Так же на аналоговый вход a0 подаётся синий провод от джойстика (пин S-X);
- С джойстика VCC стороны X идёт красным проводом на +5 В бредборда;
- С джойстика GND стороны X идёт белым проводом на GND общее бредборда;
- Ну и соответственно белый провод GND бредборда в чёрный шлейф сервомотора;
- Оранжевый провод +5 В бредборда в красный шлейф сервомотора;
Что получилось
Друзья! Вступайте в нашу группу Вконтакте, чтобы не пропустить новые статьи! Хотите сказать спасибо? Ставьте Like, делайте репост! Это лучшая награда для меня от вас! Так я узнаю о том, что статьи подобного рода вам интересны и пишу чаще и с большим энтузиазмом!
Также, подписывайтесь на наш канал в YouTube! Видео выкладываются весьма регулярно и будет здорово увидеть что-то одним из первых!
Comments: