Skocz do zawartości

Pomocna odpowiedź

Napisano

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

}

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.

  • 2 tygodnie później...

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

}

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

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

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...