Skocz do zawartości

Biblioteka "bounce2"


Haragorn

Pomocna odpowiedź

Witam. Wykorzystuję przykład z biblioteki Bounce2, aby sterować diodą on/off (wciskam raz, dioda się zapala; wciskam drugi raz, dioda gaśnie). Wiem, że muszę wpisać odpowiednią wartość w debouncer.interval(x),aby zniwelować drgania styków. Jednak nie mogę określić jaki to miałby być czas. Próbowałem standardowego 20ms, ale nic (inne wartości też).

Chyba, że ja źle rozumiem działanie tej biblioteki to proszę mnie poprawić.

Co do samego przycisku to używam Tact Switch 12x12mm z nasadką.

#include <Bounce2.h>

#define BUTTON_PIN 2
#define LED_PIN 13

// Instantiate a Bounce object
Bounce debouncer = Bounce(); 

void setup() {

 // Setup the button with an internal pull-up :
 pinMode(BUTTON_PIN,INPUT_PULLUP);

 // After setting up the button, setup the Bounce instance :
 debouncer.attach(BUTTON_PIN);
 debouncer.interval(15); // interval in ms

 //Setup the LED :
 pinMode(LED_PIN,OUTPUT);

}

void loop() {
 // Update the Bounce instance :
 debouncer.update();

 // Get the updated value :
 int value = debouncer.read();

 // Turn on or off the LED as determined by the state :
 if ( value == LOW ) {
   digitalWrite(LED_PIN, HIGH );
 } 
 else {
   digitalWrite(LED_PIN, LOW );
 }

}
Link do komentarza
Share on other sites

A masz jakiegoś linka do źródeł i dokumentacji tej biblioteki? Bo standardowo do Arduino chyba nie jest dołączona.

Drgania styków najłatwiej jest zobaczyć na oscyloskopie, jeśli tylko masz gdzieś dostęp do takiego urządzenia.

Link do komentarza
Share on other sites

Patrząc na dokumentację na https://github.com/thomasfredericks/Bounce2/wiki oraz przykład w https://github.com/thomasfredericks/Bounce2/blob/master/examples/bounce/bounce.ino powinno działać. Zatem błąd musi być gdzie indziej. Możesz pokazać nam schemat połączeń?

Niejasne jest także co rozumiesz przez "ale nic"? Co dokładnie ci nie działa? Czego oczekujesz, a co dostajesz zamiast tego?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Wg tego co tu jest w kodzie led zmienia stan tylko na czas wciśnięcia przycisku. Jeśli przykładowo value == LOW oznacza wciśnięty klawisz to led zgaśnie natychmiast po jego puszczeniu (wykona się else).

Powinno być tak

#include <Bounce2.h> 

#define BUTTON_PIN 2 
#define LED_PIN 13 

// Instantiate a Bounce object 
Bounce debouncer = Bounce(); 

void setup() { 

 // Setup the button with an internal pull-up : 
 pinMode(BUTTON_PIN,INPUT_PULLUP); 

 // After setting up the button, setup the Bounce instance : 
 debouncer.attach(BUTTON_PIN); 
 debouncer.interval(15); // interval in ms 

 //Setup the LED : 
 pinMode(LED_PIN,OUTPUT); 

} 

void loop() { 
 // Update the Bounce instance : 
 debouncer.update(); 

 // Get the updated value : 
 int value = debouncer.read(); 

 // Turn on or off the LED as determined by the state : 
 if ( value == LOW ) digitalWrite(LED_PIN, !(digitalRead(LED_PIN )); //jak wciśnięty to odczytaj stan led i wpisz przeciwnie

}
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.