Як підключити джойстик і сервопривід до Arduino UNO?

Як підключити джойстик і сервопривід до 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) ;

    }

  }

}


Описувати приклад коду не бачу потреби оскільки написано для навчання і перевірки теорії практично.

Кращим вчителем з програмування все ж таки є практика. Вдалих експериментів!



В цій категорії немає товарів.