• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Arduino sterowanie dioda za pomocą przycisku

0 głosów
2,420 wizyt
pytanie zadane 3 lutego 2020 w Mikrokontrolery przez Marak123 Stary wyjadacz (11,190 p.)
zamknięte 5 lutego 2020 przez Marak123
Chce zrobić skrypt który wyłączy diodę po przytrzymaniu przycisku przez 5 sekund tylko nie wiem jak to zrobić znalazłem funkcje millis() tylko ze nie wiem jak ją wykorzystać. Wie ktoś może jak zrobić coś takiego że po przytrzymaniu przycisku dioda się wyłączy?
komentarz zamknięcia: Rozwiązałem Nelson89 pomógł
komentarz 4 lutego 2020 przez profesorek96 Szeryf (91,400 p.)
Czyli czekaj, dioda normalnie się świeci jednak jak przytrzymasz przycisk dłużej niż 5 sekund ona zgaśnie ? Czy ponowne naciśnięcie przycisku przez 5 sekund ma ją włączyć ?
komentarz 4 lutego 2020 przez Marak123 Stary wyjadacz (11,190 p.)
Tak

2 odpowiedzi

0 głosów
odpowiedź 4 lutego 2020 przez Nelson89 Dyskutant (7,720 p.)

Cześć,

W najprostszej wersji możesz stworzyć funkcję, która będzie uruchamiać się przy każdym wykonaniu głównej pętli loop i ta dodatkowa funkcja będzie sprawdzać czy przycisk ma określony stan i czy spełniony jest warunek wyłączenia diody.

Poniżej znajdziesz kod. Za każdym razem gdy przycisk jest wciśnięty na dłużej niż 5 sekund to wyjście zmienia swój stan na przeciwny do poprzedniego stanu.

int in_pin = 2;
int out_pin = 13;

void setup() {
  pinMode(out_pin, OUTPUT);
  pinMode(in_pin, INPUT);
  digitalWrite(out_pin, HIGH);
}

void loop() {
  sprawdz_stan_wejscia();
}

void sprawdz_stan_wejscia(){
  static double start = 0;
  double koniec = millis();
  int stan_wejscia; 
  int stan_wyjscia;

  stan_wejscia = digitalRead(inPin);
  if (stan_wejscia == 1){
    if (koniec - start > 5000){
      stan_wyjscia = !digitalRead(outPin);
      digitalWrite(outPin, stan_wyjscia); 
      start = koniec;
    }
  }
  else{
    start = koniec;
  }
}

 

W tym rozwiązaniu wyjście zmieni swój stan tylko wtedy gdy przycisk będzie wciśnięty na dłużej niż 5 sekund. Dokładność czasowa tego rozwiązania jest zależna od tego, ile kodu, ile poleceń będziesz mieć w pętli głównej loop.

Pozdrawiam

komentarz 4 lutego 2020 przez Marak123 Stary wyjadacz (11,190 p.)
nie za bardzo działa trzymam przycisk i nic
komentarz 5 lutego 2020 przez Nelson89 Dyskutant (7,720 p.)

Jesteś pewien, że układ został poprawnie podłączony? Przy wgrywaniu kodu pojawia się jakiś komunikat? - W kodzie który podałem znalazło się kilka błędów w nazewnictwie zmiennych:

linia 20 zamiast inPin to in_pin

linia 23 zamiast outPin to out_pin

linia 24 zamiast outPin to out_pin

Poniżej przesyłam schemat połączenia jaki na moim arduino utworzyłem aby sprawdzić czy to rozwiązanie działa.

komentarz 5 lutego 2020 przez Marak123 Stary wyjadacz (11,190 p.)
Dobra działa inaczej miałem podłączone
0 głosów
odpowiedź 5 lutego 2020 przez XxPPDKxX Obywatel (1,400 p.)

Kolega podał ci dobry kod z drobnymi błędami. Między innymi przy guzikach musi być pinMode(in_pin, INPUT_PULLUP);

Tu ci daję kod poprawiony: 

int in_pin = 2;
int out_pin = 13;
 
void setup() {
  pinMode(out_pin, OUTPUT);
  pinMode(in_pin, INPUT_PULLUP);
  digitalWrite(out_pin, HIGH);
}
 
void loop() {
  sprawdz_stan_wejscia();
}
 
void sprawdz_stan_wejscia(){
  static double start = 0;
  double koniec = millis();
  int stan_wejscia; 
  int stan_wyjscia;
 
  stan_wejscia = digitalRead(in_pin);
  if (stan_wejscia == 1){
    if (koniec - start > 5000){
      stan_wyjscia = !digitalRead(out_pin);
      digitalWrite(out_pin, stan_wyjscia); 
      start = koniec;
    }
  }
  else{
    start = koniec;
  }
}

 

komentarz 5 lutego 2020 przez Marak123 Stary wyjadacz (11,190 p.)
Ten kod tez nie za bardzo działa bo zamiast wyłączanie diody się po przytrzymaniu przycisku to dioda mruga
komentarz 5 lutego 2020 przez XxPPDKxX Obywatel (1,400 p.)
edycja 5 lutego 2020 przez XxPPDKxX
Testowałem u siebie na płytce i dział poprawnie. Jak wrócę do domu to sprawdzę to jeszcze raz.
komentarz 5 lutego 2020 przez Marak123 Stary wyjadacz (11,190 p.)

@XxPPDKxX, Dobra działa ale mi nadal mruga

Podobne pytania

0 głosów
1 odpowiedź 2,357 wizyt
pytanie zadane 6 grudnia 2019 w Sprzęt komputerowy przez Gabel88 Początkujący (430 p.)
0 głosów
1 odpowiedź 2,638 wizyt
pytanie zadane 25 grudnia 2016 w Mikrokontrolery przez szerwi Użytkownik (620 p.)
0 głosów
1 odpowiedź 535 wizyt

93,695 zapytań

142,612 odpowiedzi

323,223 komentarzy

63,224 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...