08-03-2021, 06:53
(Ten post był ostatnio modyfikowany: 08-03-2021, 06:56 przez Jarewa0606.)
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ą.