Рассмотрим модуль джойстика с кнопками и как считывать нажатия с него. На борту имеется разъемы для подключения и беспроводного модуля и экрана.
Подключение
Как и любой шилд он легко соединяется с Arduino UNO или MEGA2560.
Скетч
В монитор порта будем выводить значение наклона джойстика и реакцию на нажатия кнопок
//Заполняем начальные переменные для джойстика и кнопок //значение оси 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); }