Buongiorno,
questo è il mio primo post e colgo l'occasione per salutare tutti.
Come indicato dal titolo sto cercando di realizzare un programma per la gestione di tre led mediante utilizzo di pulsanti; in particolare, il software, lo sto scrivendo facendo utilizzo di procedure. Il codice è il seguente:
Quando compilo il programma mi escono i seguenti errori:
C:\Users\Documents\Arduino\ReadButton\ReadButton.ino: In function 'void loop()':
ReadButton:18: error: too many arguments to function 'void readButton(int)'
readButton(Led1, Button1);
^
In file included from C:\Users\Documents\Arduino\ReadButton\ReadButton.ino:5:0:
C:\Users\Documents\Arduino\libraries\ReadButton/readButton.h:4:7: note: declared here
void readButton(int Button);
^
Uso la libreria ReadButton nella cartella: C:\Users\Documents\Arduino\libraries\ReadButton (legacy)
exit status 1
too many arguments to function 'void readButton(int)'
Gentilmente potreste spiegarmi cosa significano e come risolverli?
Sembrerebbe che tu abbia una libreria ReadButton (in C:\Users\Documents\Arduino\libraries\ReadButton (legacy)) che definisce già la funzione readButton() che hai definito anche tu in readButton.cpp/.h.
@Burton: essendo il tuo primo post, ti chiederei di presentartiQUI (spiegando bene quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ...
... inoltre, in conformità al suddetto regolamento, punto 7, edita (in basso a destra del post, bottone More -> Modify) il tuo post e racchiudi il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra). Grazie.
SukkoPera:
Sembrerebbe che tu abbia una libreria ReadButton (in C:\Users\Documents\Arduino\libraries\ReadButton (legacy)) che definisce già la funzione readButton() che hai definito anche tu in readButton.cpp/.h.
Scusa la mia profonda ignoranza ma, come indicato dalle varie guide di arduino, io ho dovuto creare i due file .cpp e .h da inserire in una cartella all'interno della cartella libraries. Ho seguito la stessa procedura che viene indicata per la creazione della libreria blinkLed solo che adesso non compila. Potresti spiegare con parole più semplice dove sto sbagliando?
Quindi readButton.cpp/.h sono i file che compongono la libreria che tu stesso stai creando? Non vedo perché complicarsi la vita, ma va bene.
In ogni caso, da qualche parte c'è un file readButton.h alla cui riga 4 c'è la dichiarazione:
void readButton(int Button);
Quindi con un solo parametro, il che non coincide né con come la funzione è poi definita nel file .cpp, né con come la chiami, visto che passi due parametri:
SukkoPera:
Quindi readButton.cpp/.h sono i file che compongono la libreria che tu stesso stai creando? Non vedo perché complicarsi la vita, ma va bene.
In ogni caso, da qualche parte c'è un file readButton.h alla cui riga 4 c'è la dichiarazione:
void readButton(int Button);
Quindi con un solo parametro, il che non coincide né con come la funzione è poi definita nel file .cpp, né con come la chiami, visto che passi due parametri:
void readButton(int pin, int button)
Devi rendere il tutto congruente.
Il mio file .h, alla quarta riga ha il seguente codice
void readButton(int pin, int button);
non capisco proprio perchè il compilatore veda soltanto
void readButton(int Button);
In ogni caso, io ho letto sulle varie guide che questa è la procedura per creare le librerie. Se tu hai un modo migliore, e più semplice, sono tutto orecchi.
Il file che contiene la dichiarazione sbagliata è C:\Users\Documents\Arduino\libraries\ReadButton/readButton.h, controlla di non avere un readButton.h duplicato da un'altra parte, tipo nella cartella dello sketch.