Salve a tutti, sto tentando di far funzionare questa libreria Google Code Archive - Long-term storage for Google Code Project Hosting. in un semplice sketch su Arduino UNO che dovrebbe restituirmi su di uno schermo oled il valore .clicks, che e' positivo se rileva una pressione breve o negativo se rileva una pressione prolungata, il problema e' che mentre mi restituisce correttamente il valore negativo, per il valore positivo devo tener premuto il tasto per circa 500 ms per fare si che venga riconosciuta la pressione breve mentre se premo normalmente (circa 50 ms) non restituisce niente. Non ho messo alcun delay e ho provato a modificare i valori di debounce e multiclicktime ma non e' cambiato nulla, avete qualche idea o conoscete una libreria simile funzionante?
Grazie a tutti delle risposte
Ecco il codice:
#include <SPI.h>
#include <ClickButton.h>
#include <Ucglib.h>
Ucglib_SSD1351_18x128x128_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
ClickButton Bup(3, LOW, CLICKBTN_PULLUP);
ClickButton Bdown(2, LOW, CLICKBTN_PULLUP);
ClickButton Bentesc(4, LOW, CLICKBTN_PULLUP);
void setup() {
ucg.begin(UCG_FONT_MODE_TRANSPARENT);
ucg.setColor(255, 255, 255);
ucg.clearScreen();
Bup.debounceTime = 20; // Debounce timer in ms
Bup.multiclickTime = 250; // Time limit for multi clicks
Bup.longClickTime = 1000; // time until "held-down clicks" register
Bdown.debounceTime = 20; // Debounce timer in ms
Bdown.multiclickTime = 250; // Time limit for multi clicks
Bdown.longClickTime = 1000; // time until "held-down clicks" register
}
void loop() {
Bup.Update();
Bdown.Update();
if (Bup.clicks == 1) {
ucg.setPrintPos(80, 20);
ucg.print("pigiato");
}
draw();
ucg.clearScreen();
}
void draw(void) {
ucg.setFont(ucg_font_ncenR12_tr);
ucg.setPrintPos(15, 15);
ucg.print("SU");
ucg.setPrintPos(45, 15);
ucg.print(Bup.clicks);
ucg.setPrintPos(15, 35);
ucg.print("GIU");
ucg.setPrintPos(60, 35);
ucg.print(Bdown.clicks);
ucg.setPrintPos(15, 55);
ucg.print("ENT");
ucg.setPrintPos(60, 55);
ucg.print(Bentesc.clicks);
}