Libreria One Button

 

 

 

 

Contenuti:

1

Arduino OneButton library per usare pulsanti con semplicità

2

 

3  
4  

 

📌 OneButton Library - Specifiche Tecniche

La libreria OneButton semplifica la gestione dei pulsanti su Arduino, fornendo funzioni per rilevare clic singolo, doppio clic e pressione prolungata senza dover scrivere codice per il debounce.


🔹 Costruttore

 

 

OneButton(uint8_t pin, boolean activeLow = true, boolean pullupActive = true);
  • pin: Pin digitale a cui è collegato il pulsante.

  • activeLow: Se true, il pulsante è considerato premuto quando il segnale è LOW (default: true).

  • pullupActive: Se true, attiva la resistenza di pull-up interna (default: true).

Esempio di creazione

 

 

OneButton button(2, true);  // Pin 2, attivo basso, pull-up abilitato

 

🔹 Metodi Principali

Gestione degli eventi

Queste funzioni permettono di associare una callback (funzione da eseguire) agli eventi del pulsante.

 

1. Clic singolo

 

void attachClick(callbackFunction newFunction);
  • Registra una funzione da eseguire quando il pulsante viene premuto e rilasciato rapidamente.

Esempio

 

void myClick() {
  Serial.println("Clic singolo!");
}
button.attachClick(myClick);

 

2. Doppio clic

 

void attachDoubleClick(callbackFunction newFunction);
  • Registra una funzione da eseguire quando viene rilevato un doppio clic.

Esempio

 

void myDoubleClick() {
  Serial.println("Doppio clic!");
}
button.attachDoubleClick(myDoubleClick);

 

3. Pressione prolungata

 

void attachLongPressStart(callbackFunction newFunction);
  • Registra una funzione da eseguire quando il pulsante viene premuto e tenuto premuto per un certo tempo.

Esempio

 

void myLongPress() {
  Serial.println("Pressione lunga iniziata!");
}
button.attachLongPressStart(myLongPress);

 

4. Fine pressione prolungata

 

void attachLongPressStop(callbackFunction newFunction);
  • Registra una funzione da eseguire quando l'utente rilascia il pulsante dopo una pressione lunga.

Esempio

 

void myLongPressStop() {
  Serial.println("Pressione lunga terminata!");
}
button.attachLongPressStop(myLongPressStop);

 

5. Durante la pressione prolungata

 

void attachDuringLongPress(callbackFunction newFunction);
  • Registra una funzione da eseguire ripetutamente mentre il pulsante è tenuto premuto.

Esempio

 

void myDuringLongPress() {
  Serial.println("Sto tenendo premuto...");
}
button.attachDuringLongPress(myDuringLongPress);

 

🔹 Gestione e configurazione

Questi metodi permettono di personalizzare il comportamento della libreria.

1. Analizza lo stato del pulsante

 

void tick()
  • Deve essere chiamato nel loop() per controllare lo stato del pulsante.

Esempio

 

void loop() {
  button.tick();  // Controlla se il pulsante è stato premuto
}

 

2. Imposta il tempo massimo per il clic singolo

 

void setClickTicks(int ticks);
  • Specifica il tempo massimo (in millisecondi) per il riconoscimento di un clic singolo (default: 400 ms).

Esempio

 

button.setClickTicks(250);  // Un clic deve durare meno di 250 ms

 

3. Imposta il tempo minimo per una pressione lunga

 

void setPressTicks(int ticks);
  • Imposta il tempo minimo (in millisecondi) che il pulsante deve essere premuto per essere considerato una pressione lunga (default: 800 ms).

Esempio

 

button.setPressTicks(1000);  // Pressione lunga dopo 1 secondo

 

4. Controlla se il pulsante è premuto

 

boolean isPressed();
  • Restituisce true se il pulsante è attualmente premuto.

Esempio

 

if (button.isPressed()) {
  Serial.println("Il pulsante è premuto!");
}

 

📌 Esempio Completo

Questo esempio mostra come gestire clic singolo, doppio clic e pressione lunga con un pulsante su Arduino.

 

#include <OneButton.h>

#define BUTTON_PIN 2  // Pin del pulsante

OneButton button(BUTTON_PIN, true);  // Pull-up interno abilitato

void singleClick() {
  Serial.println("Clic singolo!");
}

void doubleClick() {
  Serial.println("Doppio clic!");
}

void longPressStart() {
  Serial.println("Pressione lunga iniziata!");
}

void longPressStop() {
  Serial.println("Pressione lunga rilasciata!");
}

void setup() {
  Serial.begin(115200);

  button.attachClick(singleClick);
  button.attachDoubleClick(doubleClick);
  button.attachLongPressStart(longPressStart);
  button.attachLongPressStop(longPressStop);
}

void loop() {
  button.tick();  // Controlla lo stato del pulsante
}