[RISOLOTO]Problema IDE e librerie personali

Salve ragazzi,
sto provando a creare un progetto nuovo con delle librerie scritte da me in C/C++.
Ho creato due librerie (ovviamente sia i file .h sia i file .cpp) ed ho messo tutto nella cartella con il programma di arduino (.ino).
Quando apro il file .ino mi si aprono anche tutti gli altri (.h e .cpp) come giusto che sia (vero?), ma il problema si verifica quando vado a verificare lo sketch.
Lo sketch .ino non contiene nulla, ha solo le funzioni setup e loop vuote e l'include della libreria, ma quando premo il pulsante per verificare lo sketch, l'ide rimane bloccata allo stato "Sto compilando lo sketch".
Ho provato a lasciarlo compilare ma dopo 1 ora stava ancora così.
Le librerie le ho compilate e corrette nell'editor in cui scrivo i programmi in C (Bloodshed Dev C/C++) e non danno alcun errore.
Sapreste aiutarmi?
Grazie

ciao

salvatore_94:
... ed ho messo tutto nella cartella con il programma di arduino (.ino)...

non è che vanno messe dentro una cartella con lo stesso nome della libreria e a sua volta dentro la cartella libraries?

ciao
pippo72

pippo72:
ciao
non è che vanno messe dentro una cartella con lo stesso nome della libreria e a sua volta dentro la cartella libraries?

ciao
pippo72

Già provato ma non cambia nulla, rimane lo stesso in compilazione

La cosa è molto strana, al massimo il compilatore dovrebbe "arrabbiarsi" indicando errori o file mancanti, non deve rimanere in eterno in compilazione.
Da preferenze attiva il verbose sulla compilazione e posta quello che appare.

astrobeed:
La cosa è molto strana, al massimo il compilatore dovrebbe "arrabbiarsi" indicando errori o file mancanti, non deve rimanere in eterno in compilazione.
Da preferenze attiva il verbose sulla compilazione e posta quello che appare.

Se ho fatto bene, mi scrive questo mentre compila

Uso la libreria Servo nella cartella: C:\Program Files (x86)\Arduino\libraries\Servo 

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10604 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard -IC:\Program Files (x86)\Arduino\libraries\Servo\src C:\Users\SALVAT~1\AppData\Local\Temp\build4652497375530988840.tmp\RobotArm.cpp -o C:\Users\SALVAT~1\AppData\Local\Temp\build4652497375530988840.tmp\RobotArm.cpp.o

Appare solo questo ?
In pratica viene lanciato solo il primo step della compilazio, g++, e si ferma li.
Se posti l'intero sketch, inclusa la tua lib, provo a compilarlo sul mio pc.

Certo, ecco l'archivio con tutti i file.

Ho provato a compilare sia con l'IDE 1.6.5r5 e la 1.6.8, il compilatore non va in blocco e segnala molti errori nel codice, ti allego un copia incolla, mi sa tanto che devi rivedere non poco la tua libreria e, probabilmente, anche la tua installazione del IDE :slight_smile:

Arduino:1.6.8 (Windows 7), Scheda:"Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"

RobotArm.cpp:15: error: ISO C++ forbids declaration of 'setShoulder' with no type [-fpermissive]

 RobotArm::setShoulder(const int p) {Shoulder=p;}

                                  ^

RobotArm.cpp:15: error: prototype for 'int RobotArm::setShoulder(int)' does not match any in class 'RobotArm'

 RobotArm::setShoulder(const int p) {Shoulder=p;}

 ^

In file included from sketch\RobotArm.cpp:1:0:

RobotArm.h:26: error: candidate is: void RobotArm::setShoulder(int)

   void setShoulder(const int);

        ^

RobotArm.cpp:16: error: ISO C++ forbids declaration of 'setElbow' with no type [-fpermissive]

 RobotArm::setElbow(const int p) {Elbow=p;}

                               ^

RobotArm.cpp:16: error: prototype for 'int RobotArm::setElbow(int)' does not match any in class 'RobotArm'

 RobotArm::setElbow(const int p) {Elbow=p;}

 ^

In file included from sketch\RobotArm.cpp:1:0:

RobotArm.h:27: error: candidate is: void RobotArm::setElbow(int)

   void setElbow(const int);

        ^

RobotArm.cpp:17: error: ISO C++ forbids declaration of 'setWrist' with no type [-fpermissive]

 RobotArm::setWrist(const int p) {Wrist=p;}

                               ^

RobotArm.cpp:17: error: prototype for 'int RobotArm::setWrist(int)' does not match any in class 'RobotArm'

 RobotArm::setWrist(const int p) {Wrist=p;}

 ^

In file included from sketch\RobotArm.cpp:1:0:

RobotArm.h:28: error: candidate is: void RobotArm::setWrist(int)

   void setWrist(const int);

        ^

RobotArm.cpp:18: error: ISO C++ forbids declaration of 'setClaw' with no type [-fpermissive]

 RobotArm::setClaw(const int p) {Claw=p;}

                              ^

RobotArm.cpp:18: error: prototype for 'int RobotArm::setClaw(int)' does not match any in class 'RobotArm'

 RobotArm::setClaw(const int p) {Claw=p;}

 ^

In file included from sketch\RobotArm.cpp:1:0:

RobotArm.h:29: error: candidate is: void RobotArm::setClaw(int)

   void setClaw(const int);

        ^

RobotArm.cpp:19: error: ISO C++ forbids declaration of 'MoveArm' with no type [-fpermissive]

 RobotArm::MoveArm(const int s, const int e, const int w, const int c){

                                                                     ^

RobotArm.cpp:19: error: prototype for 'int RobotArm::MoveArm(int, int, int, int)' does not match any in class 'RobotArm'

 RobotArm::MoveArm(const int s, const int e, const int w, const int c){

 ^

In file included from sketch\RobotArm.cpp:1:0:

RobotArm.h:36: error: candidate is: void RobotArm::MoveArm(int, int, int, int)

   void MoveArm(const int, const int, const int, const int);

        ^

RobotArm.cpp:25: error: ISO C++ forbids declaration of 'ReadArm' with no type [-fpermissive]

 RobotArm::ReadArm(int s, int e, int w, int c){

                                             ^

RobotArm.cpp:25: error: prototype for 'int RobotArm::ReadArm(int, int, int, int)' does not match any in class 'RobotArm'

 RobotArm::ReadArm(int s, int e, int w, int c){

 ^

In file included from sketch\RobotArm.cpp:1:0:

RobotArm.h:37: error: candidate is: const void RobotArm::ReadArm(int, int, int, int)

   void const ReadArm(int, int, int, int);

              ^

exit status 1
ISO C++ forbids declaration of 'setShoulder' with no type [-fpermissive]

Questo report potrebbe essere più ricco di informazioni con l'opzione
"Mostra un output dettagliato durante la compilazione"
abilitata in File -> Impostazioni

com'è che questi errori non mi uscivano in Dev C/C++? forse l'ide di arduino ha qualcosa di differente?
cioe quando vado a sviluppare una funzione di una classe uso

nomeclasse::funzione(){  codice }

invece pare che arduino voglia il tipo prima di nomeclasse

Ho visto che il mio IDE era un po' datato :S quindi ho scaricato l'ultimo ed effettivamente ora mi da gli errori.
Li sto correggendo tutti, a quanto pare devo adattarmi ad arduino :\

Però mi chiedo perchè non mi accetta il delay()? mi dice che delay non è dichiarato (nel file .cpp)

Devi includere Arduino.h, viene incluso automaticamente solo nei file .ino.

Per il resto il tipo di ritorno di una funzione credo sia obbligatorio, se non ritorni niente mettici void.

SukkoPera:
Devi includere Arduino.h, viene incluso automaticamente solo nei file .ino.

Per il resto il tipo di ritorno di una funzione credo sia obbligatorio, se non ritorni niente mettici void.

Si ora ho risolto tutto.
Grazie mille ragazzi :slight_smile:

dev-ciofeca++

vbextreme:
dev-ciofeca++

Wow molto interessante. Ovviamente anche a me lo ha detto "la mamma", ovvero i professori alle superiori e all'università. Personalmente preferisco cambiarlo.
Quindi grazie mille :smiley:

vbextreme:
dev-ciofeca++

Perché non usi anche qui questo avatar ? :grin:

salvatore_94:
Personalmente preferisco cambiarlo.

Fai bene perché Dev C è veramente una ciofeca.

perché questo forum non lo supporta!
è il mio avatar da anni su tutti i forum che frequento.

Peccato, è una figata :smiley: