Arduino Polska Forum

Pełna wersja: BLYNK czas przytrzymania przycisku
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Może ktoś robił jakiś projekt z wykorzystaniem BLYNK? Mam taki problem. Uruchamiam przekaźnik przyciskiem. Chciałbym aby uruchamiał się jak przytrzyma się "wciśnięty" dłużej np. 2-3 sek. a nie gdy nawet chwilowo. Chodzi mi aby wyeliminować przypadkowe przyciśnięcie.
Będzie trzeba użyć przerwania na zbocze, a w nim wpisać czas z funkcji millis() do zmiennej oraz ustawić flage.
Potem w pętli loop wstawić warunek, który będzie miał 3 składowe; czy przycisk wciąż jest wciśnięty, czy minęło już odpowiednio dużo czasu oraz czy flaga jest ustawiona.
Po wejściu do warunku, flage należy wyzerować żeby dalszy kod nie wykonywał się wielokrotnie podczas trzymania przycisku.
(13-10-2020, 08:45)sebxx4 napisał(a): [ -> ]Będzie trzeba użyć przerwania na zbocze, a w nim wpisać czas z funkcji millis() do zmiennej oraz ustawić flage.
Potem w pętli loop wstawić warunek, który będzie miał 3 składowe; czy przycisk wciąż jest wciśnięty, czy minęło już odpowiednio dużo czasu oraz czy flaga jest ustawiona.
Po wejściu do warunku, flage należy wyzerować żeby dalszy kod nie wykonywał się wielokrotnie podczas trzymania przycisku.
Wielkie dzięki za odpowiedź. Jest tylko mały problem. Potraktowałeś mnie jak równego sobie a ja niestety jeszcze w pampersie Smile  Z Twojej podpowiedzi z moją wiedzą nie jestem w stanie sobie poradzić. Będę wdzięczny jak jeszcze mi poświęcisz trochę czasu i pomożesz. Pozdrawiam
Kod:
#define INPUT_PIN 2 //Numer pinu Arduino (tylko piny obsługujące przerwania)
volatile unsigned long timer;
volatile bool flag = false;

setup(){
  pinMode(INPUT_PIN, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(INPUT_PIN), switch, FALLING); //Wyzwolenie przerwania poprzez zwarcie pinu INPUT_PIN do masy
}

void switch(){
  flag = true;
  timer = millis();
}

loop(){
  if(digitalRead(INPUT_PIN) == LOW && flag && millis() - timer > 2000){
    flag = false;
   
    //Tutaj wstaw kod do wykonania po przytrzymaniu (2s) przycisku

  }
}
Dziękuje bardzo za podpowiedź i gotowca. Popróbuje i dam znać jak mi poszło. Pozdrawiam