SantyagoSantyago
YouTube RSS Google+ Facebook GitHub

Okazje Allegro

Przycisk wandaloodporny 16mm, LED RGB, S-P-K, 1NO

Przycisk wandaloodporny 16mm, LED RGB, S-P-K, 1NO
Kup teraz: 30,75 zł

Arduino poradnik

Wstęp

Teoria

Biblioteki

Komponenty

Czujniki i sensory

Rozwiązania i algorytmy

Narzędzia

Mikrokontrolery i Arduino IDE

Arduino i klony

Poradniki wideo

Sprzęt dostarczają

Reklama na Blogu

Najnowsze poradniki

Ostatnie komentarze

Popularne wpisy

Facebook

Google+

Ostatnie fotografie

polskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorywieliczka-szyb-danilowicza

Bounce jako lek na migotanie przycisków

Znacznym problemem podczas tworzenia projektu z wykorzystaniem Arduino, w którym chcemy wykorzystać do sterowania mikroprzełączniki jest możliwość wystąpienia niepożądanego zjawiska tak zwanego „migotania”. Ze względu na budowę przełączników mechanicznych, w których następuje zetknięcie lub rozłączenie styków, jest możliwość pojawienia się dodatkowych impulsów, które mogą zostać źle zinterpretowane przez nasz program jako wielokrotne naciśnięcie i zwolnienie przycisku.

Sytuacja jest bardzo prosta. Chcemy aby nasz program wykonał pojedyncza zmianę statusu podczas wciśnięcia przycisku. Kiedy palec nam zadrży, może wydarzyć się sytuacjam, w której status zmieni się wielokrotnie. Jak temu zapobiec?

Z pomocą przyjdzie nam biblioteka Bounce, która pozwoli nam nie tylko na uniknięcie wspomnianego zjawiska, ale również na reakcję przez nas program na moment wciśnięcia lub zwolnienia przycisku. Dodatkową zaletą tej biblioteki jest możliwość określenia własnego interwału oraz odczytywanie stanu przełącznika, bez względu na występowanie efektu „migotania”.

Instalacja

Instalacja jest bardzo prosta. Pobieramy wspomnianą bibliotekę Bounce i rozpakowywujemy do naszego katalagu bibliotek naszego szkicownika:

  1. tree -d ~/sketchbook/libraries/
  2. /home/santyago/sketchbook/libraries/
  3. `-- Bounce
  4.     `-- examples
  5.         |-- bounce
  6.         |-- change
  7.         |-- duration
  8.         |-- edge
  9.         `-- rebounce

Po ponownym uruchomieniu Arduino IDE, możemy zaimportować naszą bibliotekę Bounce do szkicu:

Program demonstracyjny

  1. #include <Bounce.h>
  2.  
  3. int buttonPin = 2;        // Przycisk do pinu 2
  4. int buttonLedRed = 3;     // Czerwona dioda do pinu 3
  5. int buttonLedYellow = 5;  // Żółta dioda do pinu 5
  6. int buttonLedGreen = 6;   // Zielona dioda do pinu 6
  7.  
  8. // Ustawiamy nasz "bouncer" z interwałem czasowym 50ms
  9. Bounce bouncer = Bounce(buttonPin, 50);
  10.  
  11. // Konfiguracja pinów
  12. void setup()
  13. {
  14.   pinMode(buttonPin, INPUT);
  15.   pinMode(buttonLedRed, OUTPUT);
  16.   pinMode(buttonLedYellow, OUTPUT);
  17.   pinMode(buttonLedGreen, OUTPUT);
  18. }
  19.  
  20. // Główna pętla programu
  21. void loop()
  22. {
  23.   // Aktualizujemy status przycisku
  24.   bouncer.update();
  25.  
  26.   // Pobieramy stan przycisku
  27.   int value = bouncer.read();
  28.  
  29.   // Jeśli przycisk wciśnięty, zapalamy żółtą diodę
  30.   if (value == HIGH)
  31.   {
  32.     digitalWrite(buttonLedYellow, HIGH);
  33.   } else
  34.   {
  35.     digitalWrite(buttonLedYellow, LOW);
  36.   }
  37.  
  38.   // Zapalamy czerwoną diodę na zbocze narastające (wciśnięcie)
  39.   if (bouncer.risingEdge())
  40.   {
  41.     digitalWrite(buttonLedRed, HIGH);
  42.     delay(100);
  43.   } else
  44.   {
  45.     digitalWrite(buttonLedRed, LOW);
  46.   }
  47.  
  48.   // Zapalamy zieloną diodę na zbocze opadające (zwolnienie)
  49.   if (bouncer.fallingEdge())
  50.   {
  51.     digitalWrite(buttonLedGreen, HIGH);
  52.     delay(100);
  53.   } else
  54.   {
  55.     digitalWrite(buttonLedGreen, LOW);
  56.   }

Schemat połączeń

Realizacja

Uruchomienie

Na zakończenie wystarczy zaprogramować nasz mikrokontroler i sprawdzić działanie układu.

Udpstępnij dalej!

http://www.jarzebski.pl/arduino/biblioteki/bounce-jako-lek-na-migotanie-przyciskow.html

Reklama

Komentarze Komentarze
Avatar 1
jarekArduino Windows XP / Safari 537.36
11 grudzień 2016 - 23:11 Sośnie

Witam, wydaje mi się, iż w linii 1 Programu demonstracyjnego instrukcja wywołująca bibliotekę Bounce.h powinna być Bounce2.h ( taka mała literówka..)
P.S. Może dla starych "Arduinowców" to jest jasne jak słońce, że tak powinno być, ale dla początkujących raczkujących (jak ja) taka informacja może uratować życie :)

Pozdrawiam
JarekArduino

Avatar 1
Kwachu Windows / Safari 537.36
16 czerwiec 2017 - 20:27 Straszyn

to są fwie rone biblioteki.

Robią to samo ale składnia jest inna
https://playground.arduino.cc/Code/Bounce

Skomentuj wpis