Skocz do zawartości

Sterowanie diodą LED za pomocą przycisków


LittleKing

Pomocna odpowiedź

Przede wszystkim witam wszystkich😊

Buduje button boxa do Farming Simulator i o ile sama budowa to dla mnie nie problem o tyle poległem na pisaniu programu. A oto mój problem: (podany na przykładowych pinach)

Do pinu 9, 10 oraz 11 mam podłączone przyciski 

Pin 11 to dioda LED 

I teraz chciał bym sprawić że:

Naciśnięcie pinu 9 zapala diodę na stałe.

A naciśnięcie pinu 9, 10 lub 11 ja gasi. 

Czemu ma to służyć, przycisk 9 to przycisk odpowiadający za światła w grze, przycisk 10 zmiana pojazdu. W grze po zmianie pojazdu nie przenoszone są "ustawienia" świateł z poprzedniego więc dioda która miała by służyć jako kontrolka zapalonych świateł musi zgasnąć. Tak samo jak w przypadku przycisku 11 który ma być odpowiedzialny za opuszczenie pojazdu. Ja wiem że pewnie dla wielu z was to nie problem ale ja walczę już któryś dzień z tym i efekty tego są marne, internet przeszukałem i wszędzie są przykłady ale tylko dla wersji gdzie dioda świeci ale gdy trzymamy przycisk a ja chcę go nacisnąć i święci do momentu ponownego naciśnięcia któregoś z przykładowych przycisków.

Z góry dziękuje jeżeli ktoś by był miły mi w tym pomóc

 

Edit nr.2 Wymyśliłem sposób zapalania i gaszenia diody w taki oto sposób:

void setup() {
  pinMode(13,OUTPUT);
  pinMode(12,INPUT_PULLUP);
  pinMode(11,INPUT_PULLUP);
}

boolean stan=0; //prawda lub fałsz
void loop() {
  if(digitalRead(12) == LOW)//Odczytanie stanu przycisku
  {
    delay(20);
    stan=!stan;//Odwrotnosc stanu 0->1 badz 1->0
    digitalWrite(13,stan);
    while(digitalRead(12) == LOW);
    delay(20);
  }
  if(digitalRead(11) == LOW)//Odczytanie stanu przycisku
  {
    delay(20);
    stan=0;//Zmienia stan na 0
    digitalWrite(13,stan);
    while(digitalRead(12) == LOW);
    delay(20);
}
}

Tylko teraz rodzi się problem że o ile przycisk 11 działa poprawnie w grze oraz wyłącza diodę o tyle przycisk 12 nie zawsze łapie w grze choć trzeba przyznać że diodą steruje idealnie.

Kod w całości:

// Simple example application that shows how to read four Arduino
// digital pins and map them to the USB Joystick library.
//
// Ground digital pins 9, 10, 11, and 12 to press the joystick 
// buttons 0, 1, 2, and 3.
//
// NOTE: This sketch file is for use with Arduino Leonardo and
//       Arduino Micro only.
//
// by Matthew Heironimus
// 2015-11-20
//--------------------------------------------------------------------

#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);
  pinMode(13, OUTPUT);

  // 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};

boolean stan=0; //prawda lub fałsz
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);

 //Moje dodatki
 if(digitalRead(12) == LOW)//Odczytanie stanu przycisku
  {
    delay(20);
    stan=!stan;//Odwrotnosc stanu 0->1 badz 1->0
    digitalWrite(13,stan);
    while(digitalRead(12) == LOW);
    delay(20);
  }
  if(digitalRead(11) == LOW)//Odczytanie stanu przycisku
  {
    delay(20);
    stan=0;//Zmienia stan na 0
    digitalWrite(13,stan);
    while(digitalRead(12) == LOW);
    delay(20);
}
}

 

 

 

 

Edytowano przez LittleKing
Nowe przemyślenia
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.