Рассмотрим модуль джойстика с кнопками и как считывать нажатия с него. На борту имеется разъемы для подключения и беспроводного модуля и экрана.

Подключение

Как и любой шилд он легко соединяется с Arduino UNO или MEGA2560.

Подключение модуля Joystick Shield v2.4 к Arduino

 

Скетч

В монитор порта будем выводить значение наклона джойстика и реакцию на нажатия кнопок

//Заполняем начальные переменные для джойстика и кнопок
//значение оси X читаем из пина 0 и ось Y из пина 1
#define PIN_ANALOG_X 0
#define PIN_ANALOG_Y 1
#define BUTTON_UP 2  //кнопка вверх
#define BUTTON_RIGHT 3  //кнопка вправо
#define BUTTON_DOWN 4  //кнопка вниз
#define BUTTON_LEFT 5  //кнопка влево
#define BUTTON_E 6
#define BUTTON_F 7
#define BUTTON_G 8  //кнопка при надавливании на джойстик
#define DELAY 200  //пауза при считывании значений

void setup() {  
  Serial.begin(9600);  //Скорость для монитора порта
 pinMode(BUTTON_UP, INPUT); //режим чтения  digitalWrite(BUTTON_UP, HIGH); //включаем подтягивающий резистор  pinMode(BUTTON_RIGHT, INPUT);  digitalWrite(BUTTON_RIGHT, HIGH);  pinMode(BUTTON_DOWN, INPUT);  digitalWrite(BUTTON_DOWN, HIGH);  pinMode(BUTTON_LEFT, INPUT);  digitalWrite(BUTTON_LEFT, HIGH);  pinMode(BUTTON_E, INPUT);  digitalWrite(BUTTON_E, HIGH);  pinMode(BUTTON_F, INPUT);  digitalWrite(BUTTON_F, HIGH);  pinMode(BUTTON_G, INPUT);  digitalWrite(BUTTON_G, HIGH); } void loop() {  Serial.print("x: ");  //Выводим значение оси Х  Serial.println(analogRead(PIN_ANALOG_X));  Serial.print("y: ");  //Выводим значение Y  Serial.println(analogRead(PIN_ANALOG_Y));  if (digitalRead(BUTTON_UP) == LOW) {    Serial.println("Button A is pressed");    delay(DELAY);  }  else if (digitalRead(BUTTON_RIGHT) == LOW) {    Serial.println("Button B is pressed");    delay(DELAY);  }  else if (digitalRead(BUTTON_DOWN) == LOW) {    Serial.println("Button C is pressed");    delay(DELAY);  }  else if (digitalRead(BUTTON_LEFT) == LOW) {    Serial.println("Button D is pressed");    delay(DELAY);  }  else if (digitalRead(BUTTON_E) == LOW) {    Serial.println("Button E is pressed");    delay(DELAY);  }  else if (digitalRead(BUTTON_F) == LOW) {    Serial.println("Button F is pressed");    delay(DELAY);  }  else if (digitalRead(BUTTON_G) == LOW) {    Serial.println("Button Joystick is pressed");    delay(DELAY);  }  // Some delay to clearly observe your values on serial monitor.  delay(50); }

 

Видео

Добавить комментарий


Защитный код
Обновить