Як підключити джойстик і сервопривід до Arduino UNO?
Перед початком необхідно підготувати все потрібне.
Нам знадобиться:
1. Плата KYIV UNO аналог Arduino UNO REV3.
2. Джойстик 2-х осьовий.
3. Сигнальні дроти "тато-мама".
4. На комп'ютер необхідно встановити програмне середовище Arduino IDE.
На малюнках буде вигляд оригінальної плати, оскільки схеми зроблені у програмі Fritzing.
Якщо все необхідне під рукою, приступаємо до збирання схеми:
Перевіряємо схему, якщо все зібрано правильно, приступимо до написання коду мовою програмування Cі.
Для тих, хто не має досвіду програмування, пропонується приклад коду для перевірки роботи схеми.
/*
MakeRobot.com.ua
Sample code for Arduino + servo + joystick
Author: Oleksii Savchenko
Kyiv, 2018
*/
#define joyX A0
#define joyY A1
int xValue;
int yValue;
void setup() {
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
xValue = analogRead(joyX);
yValue = analogRead(joyY);
//print the values with to plot or view
Serial.print(xValue);
Serial.print("\t");
Serial.println(yValue);
}
Перевіряємо та завантажуємо написаний код, натиснувши кнопку Upload (Завантажити). Після успішного завантаження відкриваємо Термінал для відображення значень змінних XValue yValue.
Далі, якщо все вийшло, ускладнимо завдання і підключимо сервопривід, який керуватиметься джойстиком.
Приклад підключення серво мотора, як бачимо, керуючий провід підключений до піна D5.
Також пропонується приклад коду на Сі:
/*
------------------------------------------
MakeRobot.com.ua
Sample code for Arduino + servo + joystick
Author: Oleksii Savchenko
Kiev, 2018
------------------------------------------
*/
#include <Servo.h>
Servo servo1;
int joyX = A0;
int joyY = A1;
int xValue;
int yValue;
int servo1_pin = 5;
int initial_position = 90;
void setup ( ) {
Serial.begin (9600);
servo1.attach (servo1_pin );
servo1.write (initial_position);
pinMode (joyX, INPUT);
pinMode (joyY, INPUT);
}
void loop ( ) {
xValue = analogRead (joyX);
yValue = analogRead (joyY);
if (xValue < 300) {
if (initial_position < 10) {
}
else{ initial_position = initial_position - 20; servo1.write ( initial_position );
delay (100);
}
}
if (xValue > 700) {
if (initial_position > 180)
{
}
else{ initial_position = initial_position + 20;
servo1.write ( initial_position ) ;
delay (100) ;
}
}
}
Описувати приклад коду не бачу потреби оскільки написано для навчання і перевірки теорії практично.
Кращим вчителем з програмування все ж таки є практика. Вдалих експериментів!
В цій категорії немає товарів.