Errore nello sketch di una Botton Box per Arduino Leonardo

Ciao a tutti. Sono nuovo nel forum quindi se sbaglio qualcosa scusatemi.
Sto creando una Botton Box per PC utilizzando Arduino Leonardo. ho scaricato lo sketch online (quello allegato) ma quando vado a verificarlo mi da i seguenti errori

ARDUINO_BUTTON_BOXV2:99: error: expected constructor, destructor, or type conversion before '(' token

 Joystick_Joystick(JOYSTICK_DEFAULT_REPORT_ID, 

                  ^

exit status 1
expected constructor, destructor, or type conversion before '(' token

Essendo un semi novellino nella programmazione di Arduino non ho idea di come risolvere.
Utilizzo Arduino 1.8.3.
Spero possiate aiutarmi.
Grazie mille

ARDUINO_BUTTON_BOXV2.ino (3.95 KB)

non ho mai usato quella libreria, ma stando agli esempi che vedo su Github devi eliminare la riga 12 ("Joystick _ Joystick;" è il costruttore, inutile perché lo fai dopo) e a riga 99, quella "incriminata", metti uno spazio dopo il "_":

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, 
  JOYSTICK_TYPE_JOYSTICK, 32, 0,
  false, false, false, false, false, false,
  false, false, false, false, false);

Ciao docdoc ho fatto come mi hai consigliato ma ora mi da questi errori

ARDUINO_BUTTON_BOXV2:98: error: 'JOYSTICK_DEFAULT_REPORT_ID' was not declared in this scope

 Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, 

                    ^

ARDUINO_BUTTON_BOXV2:99: error: 'JOYSTICK_TYPE_JOYSTICK' was not declared in this scope

   JOYSTICK_TYPE_JOYSTICK, 32, 0,

   ^

exit status 1
'JOYSTICK_DEFAULT_REPORT_ID' was not declared in this scope

Nei commenti all'inizio del tuo listato leggo un "USE w ProMicro" e tu hai una Leonardo...

Posta il link all'esatta libreria joystick che stai usando, devi vedere quei simboli dove stanno. Ho l'impressione che tu stia usando un esempio di una libreria ma usandone un'altra...

La libreria joystick che sto usando è questa GitHub - MHeironimus/ArduinoJoystickLibrary: An Arduino library that adds one or more joysticks to the list of HID devices an Arduino Leonardo or Arduino Micro can support.

Il file del botton box lho scaricato da qui GitHub - AM-STUDIO/32-FUNCTION-BUTTON-BOX

Pensavo fosse uno sketch gia pronto all'uso

Un mio amico mi ha portato un Arduino Pro micro ma gli errori persistono. Ho visto online che molte persone scaricano sto sketch e a loro va... Non ho più idee

Sono errori di compilazione, non di caricamento o esecuzione. La scheda non è ancora entrata in gioco, non serve nemmeno che sia connessa fino a questo punto.

Insomma, il problema è nello sketch, cerca di studiarlo e capirlo un po' invece di copiare alla cieca e magari troverai l'errore.

Berry98:
La libreria joystick che sto usando è questa GitHub - MHeironimus/ArduinoJoystickLibrary: An Arduino library that adds one or more joysticks to the list of HID devices an Arduino Leonardo or Arduino Micro can support.
Il file del botton box lho scaricato da qui GitHub - AM-STUDIO/32-FUNCTION-BUTTON-BOX

Ah ok ora va meglio.

Berry98:
Un mio amico mi ha portato un Arduino Pro micro ma gli errori persistono. Ho visto online che molte persone scaricano sto sketch e a loro va... Non ho più idee

Intanto come ti ha detto SukkoPera, gli errori sono di COMPILAZIONE, tu puoi compilare senza avere attaccato alcun Arduino (primo pulsante in alto a sinistra nell'IDE). Se compila, allora poi procedi a fare l'upload (secondo pulsante).
Ma tu nell'IDE prima di compilare hai selezionato la board corretta, ossia Aruino ProMicro, si?
E comunque parli di errori, è ESATTAMENTE lo stesso errore che ci hai postato? Ce ne sono anche altri?

Pensavo fosse uno sketch gia pronto all'uso

Penso che lo sia, perché mi sembra tutto preparato molto bene, dal GitHub al video compreso.

Ma tu NON hai usato il programma (scusa, odio il termine "sketch";)) così com'è, ma hai fatto qualche modifica, perché la prima linea che ti ho detto di eliminare (il costruttore "Joystick_ Joystick;") NON è presente nel programma scaricabile da GitHub. Per sicurezza scaricalo nuovamente e usa quello (eventualmente adattando SOLAMENTE i riferimenti ai pin).

Io poi ho l'impressione che tu abbia qualche casino con le librerie, sicuro di aver installato correttamente QUELLA libreria, e che u non abbia nel path un'altra libreria "Joystick"?
Perché il simbolo per il quale il compilatore protesta (JOYSTICK_DEFAULT_REPORT_ID) esiste nella libreria eccome, (riga 45 del file "Joystick.h").

Verifica bene la configurazione del tuo IDE, eventualmente cancella (o sposta altrove) qualsiasi libreria Joystick che trovi, e reinstalla quella giusta (usando le istruzioni corrette...). Magari in precedenza hai installato qualche altra libreria, e l'IDE prende quella (che non ha probabilmente quel simbolo) invece di quella che devi usare qui. La libreria dovresti trovarla in "%userprofile%\Documents\Arduino\libraries" (dove %userprofile% è la cartella del tuo utente, es. "C:\Users\Alex"). Verifica anche nella cartella dove hai l'IDE (es. in "c:\Program Files (x86)\Arduino\libraries"), lì tu NON devi avere altre librerie "Joystick".

In ogni caso, come regola generale, quando carichi una libreria per PRIMA COSA prova i relativi esempi forniti con la libreria stessa, per verificare che tutto funzioni. Quando gli esempi funzionano, allora puoi iniziare a provare i programmi trovati in giro.

Facci sapere.

Aggiornamento
ora riesco a caricare il programma su arduino pro mico ma me lo vede solo come bottoni e non con la funzione anche di joystick. Sapete come posso risolvere?
Grazie mille a tutti!

Beh intanto che "ora carica" significa che hai risolto il problema di prima: sarebbe cortese ed utile, nei confronti magari di chi può avere il tuo stesso problema, spiegare anche cosa hai fatto esattamente per risolvere.

Detto questo, che significa "non con la funzione anche di joystick"? Quel progetto è un BUTTON BOX che ha pulsati, leve, ed encoder rotativi, non ci sono joystick!

Per risolvere ho semplicemente eliminato tutte le librerie joystick presenti e l'ho ricaricata dall'indirizzo scritto nel commento precedente.
Il joystick non è presente ok, si potrebbe implementare?? magari copiano parte di sketch da qualche esempio?
Non sono molto abile nella scrittura degli sketch

Berry98:
Per risolvere ho semplicemente eliminato tutte le librerie joystick presenti e l'ho ricaricata dall'indirizzo scritto nel commento precedente.

Ok, bene! :smiley: Quindi hai seguito il mio consiglio ("eventualmente cancella (o sposta altrove) qualsiasi libreria Joystick che trovi, e reinstalla quella giusta")! :wink:

Il joystick non è presente ok, si potrebbe implementare?? magari copiano parte di sketch da qualche esempio?

Intanto devi prendere almeno un joystick (tipo QUESTI), e studiare un poco come si legge con quella libreria ossia provi intanto con gli esempi inclusi nella libreria stessa, collegando per ora SOLAMENTE un joystick (senza altre cose).

Quando avrai fatto un poco di pratica (avrai quindi nel frattempo sperimentato con gli esempi), avrai capito nella libreria come si leggono i due assi e come si inviano via USB per cui a quel punto (non prima!) puoi iniziare a cercare di inserire questa parte nel tuo codice.
Se avrai difficoltà, posta qui il codice che nel frattempo avrai scritto, e cerchiamo di aiutarti.

Grazie mille a tutti! Se riesco a fare qualcosa o ho bisogno lo posto qui. Ancora grazie a tutti!!

Ciao a tutti!! Sono ancora qui... Il progetto sta continuando sopratutto grazie a voi!
Mi è sorto un altro problema e spero possiate aiutarmi.
Nell'arduino per qualche strano motivo il pin15 non mi funziona.
Nello scketch che ho pubblicato in passato e che riallego i pin 2 3 4 5 6 7 vengono utilizzati per i potenziometri.
Non utilizzando potenziometri c'è un modo di convertirli per l'utilizzo di bottoni?
Spero possiate aiutarmi a concludere questo progetto.
Grazie mille a tutti!!

ARDUINO_BUTTON_BOXV2.ino (4.07 KB)

E quale sarebbe, di grazia, il pin 15 su una Leonardo? :o

Sicuramente un pin a cui si può collegare un potenziometro (ma sulla Leonardo i pin 2, 3, 4, 5, 6, 7 non permettono ciò, per la cronaca...) può anche essere usato per un pulsante. Guarda gli esempi su questi ultimi e impara a leggerli usando digitalRead(), a impostare i pull-up e a fare il debounce.

SukkoPera:
E quale sarebbe, di grazia, il pin 15 su una Leonardo? :o

... come riportato in "pins_arduino.h" per la variante "leonardo" è il PIN_SPI_SCK:

#define PIN_WIRE_SDA         (2)
#define PIN_WIRE_SCL         (3)

static const uint8_t SDA = PIN_WIRE_SDA;
static const uint8_t SCL = PIN_WIRE_SCL;

#define LED_BUILTIN 13
#define LED_BUILTIN_RX 17
#define LED_BUILTIN_TX 30

// Map SPI port to 'new' pins D14..D17
#define PIN_SPI_SS    (17)
#define PIN_SPI_MOSI  (16)
#define PIN_SPI_MISO  (14)
#define PIN_SPI_SCK   (15)

static const uint8_t SS   = PIN_SPI_SS;
static const uint8_t MOSI = PIN_SPI_MOSI;
static const uint8_t MISO = PIN_SPI_MISO;
static const uint8_t SCK  = PIN_SPI_SCK;

// Mapping of analog pins as digital I/O
// A6-A11 share with digital pins
#define PIN_A0   (18)
#define PIN_A1   (19)
#define PIN_A2   (20)
#define PIN_A3   (21)
#define PIN_A4   (22)
#define PIN_A5   (23)
#define PIN_A6   (24)
#define PIN_A7   (25)
#define PIN_A8   (26)
#define PIN_A9   (27)
#define PIN_A10  (28)
#define PIN_A11  (29)

static const uint8_t A0 = PIN_A0;
static const uint8_t A1 = PIN_A1;
static const uint8_t A2 = PIN_A2;
static const uint8_t A3 = PIN_A3;
static const uint8_t A4 = PIN_A4;
static const uint8_t A5 = PIN_A5;
static const uint8_t A6 = PIN_A6;	// D4
static const uint8_t A7 = PIN_A7;	// D6
static const uint8_t A8 = PIN_A8;	// D8
static const uint8_t A9 = PIN_A9;	// D9
static const uint8_t A10 = PIN_A10;	// D10
static const uint8_t A11 = PIN_A11;	// D12

Guglielmo

P.S.: Allegata mappa pin ATmega32U4 e della leonardo

atmega32u4.pdf (169 KB)

leonardo.pdf (1.06 MB)

Berry98:
Nello scketch che ho pubblicato in passato e che riallego i pin 2 3 4 5 6 7 vengono utilizzati per i potenziometri.
Non utilizzando potenziometri c'è un modo di convertirli per l'utilizzo di bottoni?

Quali potenziometri? Sono dei rotary encoder, niente potenziometri. Ti dovrebbe bastare eliminare tutti i riferimenti ai rotary, ed usare quei piedini per altrettanti pulsanti ma non puoi gestirli come gli altri, che sono una matrice. Ad esempio cerca "NUMROTARIES" per capire quali sono tutte le parti che fanno accesso ai rotary ed eliminale (la #define, la rotariesdef rotaries, la rotary_init(), la rotary_process(), eccetera). Vedi l'allegato (non so se compili o meno, ho solo cancellato varie parti dove si faceva riferimento agli encoder), al limite devi estendere la parte di lettura dei pulsanti.

Ma è generalmente un poco complicato e delicato modificare un codice di altri, soprattutto se fatto quasi "alla cieca" visto che non lo si comprende ancora molto, soprattutto in base alla tua esperienza (che che siamo, su D&D? :slight_smile: ).
Fossi in te lascerei così il box, che è molto generico e versatile.

ARDUINO_BUTTON_BOXV2.1.ino (2.84 KB)

@gpb01: Sì, io lo so, ma il mio commento era vagamente sarcastico, nel senso che dubito fosse quello che intendeva l'OP...

SukkoPera:
@gpb01: Sì, io lo so, ma il mio commento era vagamente sarcastico, nel senso che dubito fosse quello che intendeva l'OP...

Ooopppsss .... :smiley: :smiley: :smiley:

Guglielmo