• 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

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
1,240 wizyt
pytanie zadane 3 lutego 2020 w Mikrokontrolery przez Marak123 Stary wyjadacz (11,150 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,440 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,150 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,150 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,150 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,150 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,150 p.)

@XxPPDKxX, Dobra działa ale mi nadal mruga

Podobne pytania

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

91,832 zapytań

140,506 odpowiedzi

316,996 komentarzy

61,163 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...