• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sketch i bibloteka pod kontroler z trzema przyciskami
#1
Witam!

Na wstępie zaznaczę iż zaczynam swoją zabawę z Arduino, więc na pierwszy ogień chciałem zrobić coś prostego. Jest to kontroler przeznaczony do gier, wyposażony w trzy przyciski, jednak nie potrafię napisać, tudzież znaleźć i edytować sketcha.

Ściągnąłem bibliotekę Joystick z tego linku: https://github.com/MHeironimus/ArduinoJoystickLibrary

Jak wspomniałem moje urządzenie jest zbudowane z trzech przycisków, po jednym pinie z każdego przycisku wspólnie zalutowałem do GND, zaś sygnały z tych przycisków odpowiednio do pinów/miejsc A3, A1 oraz 15.

Najbliżej sukcesu byłem używając aplikacji SimHub, która ma wbudowany swego rodzaju kofigurator Ardunio i wszystko działało, jednak jestem estetą i nie podoba mi się to, że w sofcie jest około 20 przycisków, z czego tylko 3 są używane. Chciałem napisać sketch do tego projektu, jednak kompletnie nie wiem o co chodzi. Wgrałem przykładowy szkic pod nazwą "Joystick Button" ale po zweryfikowaniu i wgraniu nic nie działa, a dodatkowo widzę że w sofcie pojawiło się jeszcze więcej przycisków, pomimo że w szkicu są określone tylko 4 przyciski. Tutaj pytanie - czy za ilością przycisków w sofcie odpowiada biblioteka?

Dodam, że próbowałem zmienić pinMode. Tam gdzie figurują cyfry 9, 10 i 11 zmieniłem na A3, A1 i 15, ale podejrzewam że to na nic bo nic to nie dało, jedynie pierwsze 3 przyciski były "wciśnięte" cały czas w sofcie.

Kod:
#include <Joystick.h>

Joystick_ Joystick;

void setup() {
  // Initialize Button Pins
  pinMode(9, INPUT_PULLUP);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);
  pinMode(12, INPUT_PULLUP);

  // Initialize Joystick Library
  Joystick.begin();
}

// Constant that maps the phyical pin to the joystick button.
const int pinToButtonMap = 9;

// Last state of the button
int lastButtonState[4] = {0,0,0,0};

void loop() {

  // Read pin values
  for (int index = 0; index < 4; index++)
  {
    int currentButtonState = !digitalRead(index + pinToButtonMap);
    if (currentButtonState != lastButtonState[index])
    {
      Joystick.setButton(index, currentButtonState);
      lastButtonState[index] = currentButtonState;
    }
  }

  delay(50);
}


Mam nadzieję że udało mi się sprecyzować o co chodzi, jeśli nie postaram się to opisać dokładniej. Pozdrawiam!
 
Odpowiedź
  


Wiadomości w tym wątku
Sketch i bibloteka pod kontroler z trzema przyciskami - przez GTR - 04-07-2021, 14:13

Skocz do:


Przeglądający: 1 gości