Отработка джойстика как 4 кнопки

arduino not my
arduino not my аватар
Offline
Зарегистрирован: 28.10.2020

Здравствуйте, появилась надобность в проекте - обработать 4 кнопки (типо вперед назад влево вправо). Вместо 4 кнопок я решил использовать 1 джойстик. А теперь вопрос - как его отработать при помощи библиотеки GyverButton.Знаю, что можно просто  через analogRead. а в проекте нужно отслеживать когда джойстик нажат 1 раз, 2раза, просто зажат и так далее.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

arduino not my пишет:

А теперь вопрос - как его отработать при помощи библиотеки GyverButton.

Gyver знает

-NMi-
Offline
Зарегистрирован: 20.08.2018

Можно. Через аналог (2 входа) считываешь положения X и Y. Через обычный вход - кнопку нажатия. Ну, ~~ строк 20 кода.

vde69
Offline
Зарегистрирован: 10.01.2016

джостики они разные бывают... например я себе купил i2c,

зы

для начала хоть какие-то данные про железо сообщите :)

arduino not my
arduino not my аватар
Offline
Зарегистрирован: 28.10.2020

Спасибо вам за то, что так быстро ответили.Вообще разобрался, может кому и пригодится

#include "AnalogKey.h"
#include "GyverButton.h"
AnalogKey<A0,2>X;
GButton btn1,btn2;

void setup(){
  X.attach(0,0);
  X.attach(1,1023);
  Serial.begin(9600);
}
void loop(){
  btn1.tick(X.status(0));
  btn2.tick(X.status(1));
  if (btn1.isClick()) Serial.println("click 0");
  if (btn2.isClick()) Serial.println("click 1");
  if (btn1.isHolded()) Serial.println("hold 0");
  if (btn2.isHolded()) Serial.println("hold 1");
}

 

arduino not my
arduino not my аватар
Offline
Зарегистрирован: 28.10.2020

Это отработка одной оси.

arduino not my
arduino not my аватар
Offline
Зарегистрирован: 28.10.2020

Просто дешевый ардуино джойстик(два потенциометра).

arduino not my
arduino not my аватар
Offline
Зарегистрирован: 28.10.2020

Вот скетч полноценной отработки двух осей джойстика

#include "AnalogKey.h"
#include "GyverButton.h"
AnalogKey<A0, 2>X;
AnalogKey<A1, 2>Y;
GButton F, B;
GButton L, R;
void setup() {
  X.attach(0, 0);
  X.attach(1, 1023);
  Y.attach(0, 0);
  Y.attach(1, 1023);
  Serial.begin(9600);
}
void loop() {
  F.tick(X.status(0));
  B.tick(X.status(1));
  R.tick(Y.status(0));
  L.tick(Y.status(1));
  if (F.isClick()) Serial.println("click F");
  if (B.isClick()) Serial.println("click B");
  if (F.isHolded()) Serial.println("hold F");
  if (B.isHolded()) Serial.println("hold B");
  if (L.isClick()) Serial.println("click L");
  if (R.isClick()) Serial.println("click R");
  if (L.isHolded()) Serial.println("hold L");
  if (R.isHolded()) Serial.println("hold R");
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

arduino not my пишет:
как его отработать при помощи библиотеки GyverButton.
Может лучше при помощи Gyver joystick?

А вообще, лучше вот тут спросите - https://community.alexgyver.ru/

vvadim
Offline
Зарегистрирован: 23.05.2012

И нафига в этой задаче использовать гайверовские библиотеки ?
и без них всё решается.