• 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
3 klik ;)
#2
Kod:
bool klik_SW = false;                // Przelacznik licznika klikniec
uint8_t data_klik_SW = 0;            // Licznik klikniec
uint8_t stan_short_SW;               // Zmienna stanu do krutkiego pezycisku
uint8_t stan_long_SW;                // Zmienna stanu do dlugiego przycisku reset
uint8_t ostatni_stan_SW = HIGH;      // Poprzedni stan odczytanu z pinu wejsciowego
uint32_t SW_Time;                    // Zmienna  czasu long/short
uint32_t klik_SW_Time;               // Zmienna  czasu licznika klikniec



void on_off_SW() {

  uint8_t odczyt_SW = digitalRead(SW_);     // Odczyt stanu przycisku do zmiennej  GPIO 0
  if (odczyt_SW != ostatni_stan_SW) {       // Jezeli wykryto inny stan wlacz odliczanie
    SW_Time = millis();
  }
  ostatni_stan_SW = odczyt_SW;              // Zapisywanie  odcztanej wartosci stanu przyciku

  if ((millis() - SW_Time) > 50) {          // Warunek czasu minimalnego krotkiego nacisniecia drganie stykow
    if (odczyt_SW != stan_short_SW) {
      stan_short_SW = odczyt_SW;
      if (stan_short_SW == LOW) {           // Jesli przycisk jest wcisniety (stan niski)
        klik_SW_Time=millis();              // Odliczanie czasu na drugie przycisniecie
        data_klik_SW++;                     // Licznik przycisnienc
        klik_SW=true;                       // Przelacznik zadzialania licznika
      }
    }
  }
 
  if ((millis() - klik_SW_Time) > 600 && odczyt_SW == HIGH){ // Czas na podliczenie licznika przycisniec i puszczeniu przycisku
    if (klik_SW == true){                   // Sprawdzanie  czy byl uruchomiony licznik przycisniec SW
      if (data_klik_SW == 1){               // Jezeli raz przycisnieto
       
       // funkcja 1xklik
      }
      if (data_klik_SW == 2){               // Jezeli przycisnieto dwa razy
       
        // funkcja 2xklik
      }
        klik_SW = false;                    // Zresetowanie uruchomionego licznika
        data_klik_SW = 0;                   // Zresetowanie licznika przycisku
       
    }
  }
   
  if ((millis() - SW_Time) > 2000) {       // Warunek czasu na przycisniecie dlugie
    if (odczyt_SW != stan_long_SW) {
      stan_long_SW = odczyt_SW;
      if (stan_long_SW == LOW) {           // Jezeli przycisk wcisniety ponad 2s
        klik_SW = false;                   // Zresetowanie uruchomionego licznika
        data_klik_SW = 0;                  // Zresetowanie licznika przycisku
       
        // funkcja do wywołania

      }
    }
  }
}


Przycisk  funkcyjny  drobne zmiany i działa jak chcesz..
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
  


Wiadomości w tym wątku
3 klik ;) - przez br004d - 08-03-2021, 02:06
RE: 3 klik ;) - przez Jarewa0606 - 08-03-2021, 06:53
RE: 3 klik ;) - przez br004d - 08-03-2021, 16:20
RE: 3 klik ;) - przez Jarewa0606 - 08-03-2021, 18:03

Skocz do:


Przeglądający: 1 gości