Найти в Дзене
Arduino

Arduino и Джойстик из Sensor Kit for Arduino

Для создания Arduino проекта нам понадобится:

  • среда разработки ArduinoIDE;
  • плата Arduino;
  • Джойстик (из набора Sensor Kit for Arduino)
  • RGB светодиод (из набора Sensor Kit for Arduino);
  • монтажные провода - 9 шт.;
  • резистор 10 кОм;
  • плата для монтажа без пайки.

В данном проекте в качестве платы Arduino будем использовать Arduino UNO.

Рисунок 1 - Arduino UNO
Рисунок 1 - Arduino UNO

RGB светодиод из набора Sensor Kit for Arduino. Отличительные особенности этого RGB светодиода в том, что на плате светодиода установлены резисторы на 1 кОм.

Рисунок 2 - RGB светодиод
Рисунок 2 - RGB светодиод

Джойстик из набора Sensor Kit for Arduino.

Рисунок 3 - Джойстик
Рисунок 3 - Джойстик

Схема подключения следующая:

Рисунок 4 - Схема подключения
Рисунок 4 - Схема подключения

Резистор в данной схеме играет роль подтягивающего к питанию, он равен 10 кОм.

Рисунок 5 - ArduinoUNO и Джойстик с RGB светодиодом
Рисунок 5 - ArduinoUNO и Джойстик с RGB светодиодом

Запустим ArduinoIDE:

Рисунок 5 - ArduinoIDE
Рисунок 5 - ArduinoIDE

Вставим следующий код в ArduinoIDE и загрузим (комбинация клавиш Ctrl + U) его на плату (если у вас возникли ошибки при загрузке прочтите следующее):

// пин контакта VRX
int VRx = A0;
// пин контакта VRY
int VRy = A1;
// пин подключения кнопки
int button = 8;
// пины подключения RGB светодиода
int ledR = 11;
int ledG = 10;
int ledB = 9;
void setup () {
pinMode(VRx, INPUT);
pinMode(VRy, INPUT);
pinMode(button, INPUT);
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
}
void loop () {
// Джойстик вверх
if(analogRead(VRx) == 1023){
// Красный
digitalWrite(ledR, HIGH); // ВКЛ
}
// Джойстик вниз
else if(analogRead(VRx) == 0){
// Зеленый
digitalWrite(ledG, HIGH); // ВКЛ
}
// Джойстик влево
else if(analogRead(VRy) == 0){
// Синий
digitalWrite(ledB, HIGH); // ВКЛ
}
// Джойстик вправо
else if(analogRead(VRy) == 1023){
// Белый
digitalWrite(ledR, HIGH); // ВКЛ
digitalWrite(ledG, HIGH); // ВКЛ
digitalWrite(ledB, HIGH); // ВКЛ
}
else{
digitalWrite(ledR, LOW); // ВЫКЛ
digitalWrite(ledG, LOW); // ВЫКЛ
digitalWrite(ledB, LOW); // ВЫКЛ
}
// Кнопка
if (digitalRead(button) == LOW){
digitalWrite(ledR, HIGH); // ВКЛ
delay(200);
digitalWrite(ledR, LOW); // ВЫКЛ
delay(200);
digitalWrite(ledG, HIGH); // ВКЛ
delay(200);
digitalWrite(ledG, LOW); // ВЫКЛ
delay(200);
digitalWrite(ledB, HIGH); // ВКЛ
delay(200);
digitalWrite(ledB, LOW); // ВЫКЛ
delay(200);
}
}

Результат:

  • при ведении джойстика вверх — светодиод загорится красным;
  • при ведении джойстика вниз — светодиод загорится зеленым;
  • при ведении джойстика влево — светодиод загорится синим;
  • при ведении джойстика вправо — светодиод загорится белым;
  • при нажатии на кнопку джойстика — светодиод по очереди загорится красным, зеленым и синим.