SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

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

Reklama na Blogu

Najnowsze poradniki

Ostatnie komentarze

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.

Reklama

Komentarze Komentarze
Avatar 1
jarekArduino Windows XP / Safari 537.36
11 December 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 June 2017 - 20:27 Straszyn

to są fwie rone biblioteki.

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