Skocz do zawartości
Ważne ogłoszenie » Kliknij i sprawdź informacje o nowym forum! Czytaj dalej... ×
Haragorn

Biblioteka "bounce2"

Recommended Posts

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 );
 }

}

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
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?

Udostępnij ten post


Link to post
Share on other sites

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

}

Udostępnij ten post


Link to post
Share on other sites

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

×