Arduino e Libreria OneButton

Ciao, chiedo aiuto a voi del forum, perché, oggi, dopo 25 anni di onorata carriera come programmatore elettronico, ho capito di non saper fare un copia incolla !!!
Il problema è questo : sto implementando uno sketch per la gestione di una striscia di led tramite un pulsante; ho utilizzato la libreria OneButton per gestire Click e DoppioClick del pulsante; ho trovato in rete una libreria modificata della OneButton che permette la gestione anche del triploClick; ebbene signori non riesco a fargliela riconoscere all' Arduino e la cosa che mi fa imbestialire è che ho cancellato fisicamente dalla libraries la vecchia libreria, gli ho ricopiato la nuova ma i files cpp e header sono sempre quelli della vecchia; ed infatti ho la nuova salvata sul desktop apro il file cpp e mi ritrovo la gestione del triploclick copio il file lo incollo nella libraries e magicamente aprendolo manca la gestione del triplo click. Ho ripetuto l'operazione 10 volte e per 10 volte sempre lo stesso risultato.
Se riuscite a darmi una spiegazione o illuminarmi affinché possa risolvere il problema ve ne sarei grato, altrimenti la mia "onorata carriera" sarà compromessa per sempre .
Thank

pantera62:
Se riuscite a darmi una spiegazione o illuminarmi affinché possa risolvere il problema ve ne sarei grato

Dobbiamo cercare noi la libreria o ce la incolli tu? :grin:
E poi senza il tuo sketch è un po' difficile capire il problema.

Controlla i percorsi, forse hai dimenticato qualcosa da qualche parte.

Prova a chiudere l'IDE quando copi nella libreria.
Sei sicuro dei percorsi?

Grazie ragazzi,
ho fatto le prove chiudendo l’ide, ho scollegato arduino, anzi ho fatto di più :

  • ho scollegato l’arduino dalla usb del computer.
  • ho riavviato il computer
  • ho cancellato fisicamente la libreria OneButton dalla libraries di Arduino, svuotando pure il cestino
  • ho aperto i file Cpp e Header della libreria OneButton modificata e ho ricontrollato che all’interno
    avessero i metodi per la gestione del triploClick.
  • ho ricopiato, senza aver mai aperto l’ide di arduino dal riavvio del computer, la libreria OneButton modificata e ricontrollata nella libraries di Arduino .
  • ho riaperto con doppioclick i file cpp e header della libreria e li ho ritrovati privi del controllo del triploClick.
    Da quanto detto il problema è proprio a monte.
    Riflettendoci bene, una prova che potrei fare è quella di togliere le autorizzazioni in scrittura alla cartella libraries, farla diventare normale , magari è questione di puntamenti, cache o chissà che cosa.

Vi faccio sapere

E buona norma inserire le librerie di terze parti all'interno della cartella "libreries" nella cartella degli sketch di Arduino e non nella cartella "libreries" dell'IDE.
In base al sistema operativo e alla versione dell'IDE gli sketch potrebbero essere conservati nella cartella "sketckbook" o "Arduino".
Ti consiglio se le hai messe all'interno dell'IDE, di chiuderlo, di spostare le librerie aggiuntive nella sottocartella degli sketck e riavviare l'IDE.
In questo modo dovessi anche avere IDE diversi, ad esempio sia la 1.0.5 che la 1.5.4 le librerie aggiuntive saranno disponibili per entrambe.

Attaccare e staccare l'Arduino non serve.

Grazie al vostro contributo ho risolto facendo un pò di pulizia nelle varie librerie sia degli sketch che dell’ide.
Ho cancellato tutte le OneButton dalle librerie , ho fatto l’import della libreria modificata e la cosa ha funzionato.

Grazie ancora a tutti.

Ragazzi mancano 2 gg e lancio arduino due dalla finestra trasformandolo in un Frisbie cablato interconnessto.
Dopo 22 ore ancora non sono riuscito a far leggere la libreria PinChangeInt.h al mio arduino qualcunopotrebbe aiutarmi a non far decollare Arduino 2?

Grazie in anticipo allego il codice qui di seguito

#include <Servo.h>
#include <PinChangeInt.h>

//Declare Receiver Inputs to read channel signals
#define ESC_IN 8
#define ELEVATOR_IN 13
#define AILERON_IN 11
//Declare bit-flags to indicate if which channels have new signals
#define ESC_FLAG 1
#define ELEVATOR_FLAG 2
#define AILERON_FLAG 4
//Holds update flags defined above
volatile uint8_t bUpdateFlagsShared;
//Shared variables are updated by the ISR
volatile uint16_t ESC_IN_SHARED, ELEVATOR_IN_SHARED, AILERON_IN_SHARED;
//These are used to to to record rising edge of a pulse
uint32_t ESC_START, ELEVATOR_START, AILERON_START;
//Declare servos
Servo esc, elevator, aileron;

void setup(){
Serial.begin(9600);
//Attach Servos
esc.attach(7);
elevator.attach(12);
aileron.attach(10);
//Attaches interrupts using PinChangeInt library
PCintPort::attachInterrupt(ESC_IN, escRead, CHANGE);
PCintPort::attachInterrupt(ELEVATOR_IN, elevatorRead, CHANGE);
PCintPort::attachInterrupt(AILERON_IN, aileronRead, CHANGE);
}
//void loop(){}

void loop(){
//local variables to hold channel inputs
static uint16_t ESC, AILERON, ELEVATOR;
//local updated flags
static uint8_t bUpdateFlags;
//check shared flags to see if we have a new signal
if(bUpdateFlagsShared){
noInterrupts();
bUpdateFlags = bUpdateFlagsShared;
if(bUpdateFlags & ESC_FLAG){
ESC = ESC_IN_SHARED;
}
if(bUpdateFlags & ELEVATOR_FLAG){
ELEVATOR = ELEVATOR_IN_SHARED;
}
if(bUpdateFlags & AILERON_FLAG){
AILERON = AILERON_IN_SHARED;
}

bUpdateFlagsShared = 0;
interrupts();

}
if(bUpdateFlags & ESC_FLAG){
esc.writeMicroseconds(ESC);
}
if(bUpdateFlags & ELEVATOR_FLAG){
elevator.writeMicroseconds(ELEVATOR);
}
if(bUpdateFlags & AILERON_FLAG){
aileron.writeMicroseconds(AILERON);
}
bUpdateFlags = 0;
}

void escRead(){
if(digitalRead(ESC_IN) == HIGH){
ESC_START = micros(10);
}else{
ESC_IN_SHARED = (uint16_t) (micros() - ESC_START);
bUpdateFlagsShared |= ESC_FLAG;
}
}

void elevatorRead(){
if(digitalRead(ELEVATOR_IN) == HIGH){
ELEVATOR_START = micros(10);
}else{
ELEVATOR_IN_SHARED = (uint16_t) (micros() - ELEVATOR_START);
bUpdateFlagsShared |= ELEVATOR_FLAG;
}
}

void aileronRead(){
if(digitalRead(AILERON_IN) == HIGH){
AILERON_START = micros(10);
}else{
AILERON_IN_SHARED = (uint16_t) (micros() - AILERON_START);
bUpdateFlagsShared |= AILERON_FLAG;
}
}