• 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
Sterowanie LED przyciskami
#3
Lekcje już trochę nadrobione, kod wygląda już inaczej. Lecz pytanie do was czy należało by coś jeszcze poprawić?
Kod:
#include <PCF8574.h>
#include <Arduino.h>
#include <Wire.h>
#include <Joystick.h>

PCF8574 pcf8574(0x20);



Joystick_ Joystick;
//Definicje pinów do których podłączam ledy

const int dioda1 = P0; //Pauza Czas
const int przycisk1 = 1; //Pauza Czas
int stan_dioda1 = HIGH;
int stan_przycisk1;
int ostatni_stan_przycisk1 = HIGH;
long lastDebounceTime = 0; // Zmienna potrzebna do przechowynia mierzeonego w milisekundach czasu 
long czas_drgania = 100;    // Czas na drganie styków
void setup() {

 
  // Ledy
    pcf8574.pinMode(dioda1, OUTPUT);
  pcf8574.digitalWrite(dioda1, stan_dioda1);
  pinMode(przycisk1, INPUT_PULLUP);
pcf8574.begin();
 

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

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

// Last state of the button
int lastButtonState[13] = {0,0,0,0,0,0,0,0,0,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);

//Pauza - przycisk1, dioda1
  int odczyt1 = digitalRead(przycisk1); //Odczyt stanu przycisku do zmiennej lokalnej

// W tym miejscu rozpoczyna się procedura chroniąca nasz układ przed drganiem styków
//Jeśli aktualnie odczytany stan przycisku jest różny od zmiennej ostatni_stan_przycisku
//Uruchamia się funkcja millis() odliczająca milisekundy
  if (odczyt1 != ostatni_stan_przycisk1) {
    lastDebounceTime = millis();
  }
//Jeśli ostatni czas zmiany stanu przycisku był większa od zmiennej czas_drgania
  if ((millis() - lastDebounceTime) > czas_drgania) {
//Jeśli aktualnie odczytany stan przycisku jest nadal różny od zminnej stan_przycisku, przypisuje odczytaną wartość do stan_przycisku
    if (odczyt1 != stan_przycisk1) {
      stan_przycisk1 = odczyt1;

      if (stan_przycisk1 == LOW) { // Jeśli przycisk jest wciśniety (stan wysoki)
        stan_dioda1 = !stan_dioda1;//Wyłączenie diody (negacja zmiennej stan_diody przechowującej wartość HiGH)
       }
    }
  }

pcf8574.digitalWrite(dioda1, stan_dioda1); //Ustawienie bierzącego stanu diody na pinie wyjściowym (stan wysoki, lub niski)

  ostatni_stan_przycisk1 = odczyt1; //Zapisanie ostatniego stanu przycisku
}
}
Średnio jest to póki co opisane, po za tym jest też tylko dla jednego przycisku ale to tylko do testów więc póki co tyle wystarczy
 
Odpowiedź
  


Wiadomości w tym wątku
Sterowanie LED przyciskami - przez LittleKing - 29-06-2021, 11:52
RE: Sterowanie LED przyciskami - przez kaczakat - 04-07-2021, 19:31
RE: Sterowanie LED przyciskami - przez LittleKing - 13-07-2021, 10:30
RE: Sterowanie LED przyciskami - przez kaczakat - 15-07-2021, 22:14

Skocz do:


Przeglądający: 1 gości