[RISOLTO] Sonar SRF08.zip non si compila

Salve,
ho scaricato da questo sito “Arduino Playground - HomePage i sorgenti “Sonar SRF08.zip”.
Ho creato una cartella chiamata SRF08 evi ho copiato dentro tutti i sorgenti contenuti nel .zip
Poi ho aperto nell' IDE di arduino il file SRF08.ino .Come mi aspettavo , nell'IDE compaiono anche i sorgenti .cpp e .h.
Ma la verifica ha esito negativo, con il seguente messaggio:

“SRF08.cpp:15:24: fatal error: SonarSRF08.h: File o directory non esistente
compilation terminated.”

Lavoro con Linux Ubuntu 12.04.

Cosa ho sbagliato? Come faccio a rimediare?

Grazie per l'aiuto

La libreria non é messo nel posto giusto e l'IDE non la trova.
Devi creare nella cartella arduino/libraries la cartella SonarSRF08 e copiarci il contenuto del Zip. Poi (se hai aperto l'IDE chiuderlo e) aprirlo. Trovi nel menu file/ esempi l' esempio srf08.
Ciao Uwe

Se lavori con l'IDE 1.0.x avrai la cartella ~/sketchbook in cui tieni i tuoi sketch.
Dentro tale cartella, se non ce l'hai di già crea la cartella /libraries. Dentro quest'ultima copia la cartella /SRF08 che contiene i sorgenti della lib. A questo punto riavvia l'IDE per fargli caricare la libreria. Se l'ha trovata correttamente dentro al menu "File/Esempi" avrai la voce SRF08 ed il relativo sketch di esempio selezionabile.

I nomi dei file sono: SonarSRF08.cpp e SonarSRF08.h. Se li rinomini devi anche modificare i riferimenti interni al file.
La cartella nominala SonarSRF08

Qui le librerie su GitHub --> GitHub - LeoColomb/Arduino-SRF: 🚥 Arduino interfacing with sonar sensor SRF

grazie per la dritta: così trova tutto, ma non si compila per questi errori:

// Optional change Address -
// NEW_ADDRESS can be set to any of E0, E2, E4, E6, E8, EA, EC, EE
// F0, F2, F4, F6, F8, FA, FC, FE
void SonarSRF08::changeAddress(int commandRegister, int NEW_ADDRESS, int gainRegister, int rangeLocation){
SonarSRF08::sendCommand(commandRegister, commandRegister, 0xA0, gainRegister, rangeLocation);
SonarSRF08::sendCommand(commandRegister, commandRegister, 0xAA, gainRegister, rangeLocation);
SonarSRF08::sendCommand(commandRegister, commandRegister, 0xA5, gainRegister, rangeLocation);
SonarSRF08::sendCommand(commandRegister, commandRegister, NEW_ADDRESS, gainRegister, rangeLocation);
}
SRF08/SonarSRF08.cpp.o: In function SonarSRF08::changeAddress(int, int, int, int)':</sup> <sup>/home/danilo/ARDUINO/libraries/SRF08/SonarSRF08.cpp:94: multiple definition of SonarSRF08::connect()'
SonarSRF08.cpp.o:SonarSRF08.cpp:94: first defined here
SRF08/SonarSRF08.cpp.o: In function SonarSRF08::changeAddress(int, int, int, int)':</sup> <sup>/home/danilo/ARDUINO/libraries/SRF08/SonarSRF08.cpp:94: multiple definition of SonarSRF08::sendCommand(int, int, int, int, int)'
SonarSRF08.cpp.o:SonarSRF08.cpp:94: first defined here
SRF08/SonarSRF08.cpp.o: In function SonarSRF08::changeAddress(int, int, int, int)':</sup> <sup>/home/danilo/ARDUINO/libraries/SRF08/SonarSRF08.cpp:94: multiple definition of SonarSRF08::setUnit(int, int, char, int, int)'
SonarSRF08.cpp.o:SonarSRF08.cpp:94: first defined here
SRF08/SonarSRF08.cpp.o: In function SonarSRF08::changeAddress(int, int, int, int)':</sup> <sup>/home/danilo/ARDUINO/libraries/SRF08/SonarSRF08.cpp:94: multiple definition of SonarSRF08::setRegister(int, int)'
SonarSRF08.cpp.o:SonarSRF08.cpp:94: first defined here
SRF08/SonarSRF08.cpp.o: In function SonarSRF08::changeAddress(int, int, int, int)':</sup> <sup>/home/danilo/ARDUINO/libraries/SRF08/SonarSRF08.cpp:94: multiple definition of SonarSRF08::readData(int, int)'
SonarSRF08.cpp.o:SonarSRF08.cpp:94: first defined here
SRF08/SonarSRF08.cpp.o: In function SonarSRF08::changeAddress(int, int, int, int)':</sup> <sup>/home/danilo/ARDUINO/libraries/SRF08/SonarSRF08.cpp:94: multiple definition of SonarSRF08::changeAddress(int, int, int, int)'
SonarSRF08.cpp.o:SonarSRF08.cpp:94: first defined here
collect2: ld returned 1 exit status

@vor_paul:
andiamo per gradi: lo sketch di esempio ti compila oppure no?

Con la 1.0.4, a me, l'esempio allegato alla libreria compila.

il nome della cartella che contiene gli sketch non ha importanza (magie? di arduino), l'importante è il nome dei file, che l'inculde usi " " al posto di < >(questo anche all'interno della libreria che usi!). In generale è un'ottima idea, anche per chi SCRIVEle librerie, di usare " " al posto di < > a meno che non sia un include ad una libreria UFFICIALE.

attualmente il tuo problema è che hai la libreria in 2 cartelle:
una è /home/danilo/ARDUINO/libraries/SRF08
l'altra probabilmente è quella dello sketch.

scusatemi, sarà l'età.
Allora: come cartella degli skech io non uso la "sketchbook", ma "/home/danilo/ARDUINO". in questa cartella ho creato la cartella "libraries", dove dentro ho messo la cartella "SRF08", che contiene: "SRF08.ino", "SonarSRF08.h", "SonarSRF08.cpp", "keywords.txt", "readme.md".
Con l' IDE dal menu File con l'opzione "Examples" arrivo alla SFR08 che cliccato mi porta nell'IDE i tre sorgenti "SRF08.ino", "SonarSRF08.h", "SonarSRF08.cpp".
Con l' IDE dal menu File con l'opzione "sketchbook" arrivo a "libraries" e da qui a SFR08 che cliccato mi porta nell'IDE i tre sorgenti.
Stesso risultato se dal menu File scelgo "Open", quindi "ARDUINO", poi "libraries", poi "SFR08".
Ma la verifica ha sempre lo stesso risultato (naturalmente).
in "SFR08.ino" ho modificato #include <SonarSRF08.h> in #include "SonarSRF08.h"; nel sorgente "SonarSRF08.cpp" non è stata necessaria la modifica.

riporto gli screen print:







grazie per il tempo che mi dedicate.

Io lavoro solo con Windows, per cio che riguarda linux non so aiutarti. Comunque c'è qualcosa che non va nelle cartelle.
Estraendo lo zip avrebbe dovuto crearti la cartella con dentro il .h e il .cpp ed un'ulteriore cartella examples con dentro l'esempio.
Come dice lesto però la cartella la dovresti inserire in /home/danilo/ARDUINO/libraries/SRF08

Le foto le devi caricare su un host in rete oppure allegare tramite "Additional Options...".

vor_paul:
scusatemi, sarà l'età.
Allora: come cartella degli skech io non uso la "sketchbook", ma "/home/danilo/ARDUINO". in questa cartella ho creato la cartella "libraries", dove dentro ho messo la cartella "SRF08", che contiene: "SRF08.ino", "SonarSRF08.h", "SonarSRF08.cpp", "keywords.txt", "readme.md".
Con l' IDE dal menu File con l'opzione "Examples" arrivo alla SFR08 che cliccato mi porta nell'IDE i tre sorgenti "SRF08.ino", "SonarSRF08.h", "SonarSRF08.cpp".
Con l' IDE dal menu File con l'opzione "sketchbook" arrivo a "libraries" e da qui a SFR08 che cliccato mi porta nell'IDE i tre sorgenti.
Stesso risultato se dal menu File scelgo "Open", quindi "ARDUINO", poi "libraries", poi "SFR08".
Ma la verifica ha sempre lo stesso risultato (naturalmente).
in "SFR08.ino" ho modificato #include <SonarSRF08.h> in #include "SonarSRF08.h"; nel sorgente "SonarSRF08.cpp" non è stata necessaria la modifica.

Non va bene così.
Devi avere 2 cartelle distinte, una che contiene la libreria e gli esempi ed una del tuo sketch.
Quindi dentro /home/danilo/ARDUINO/libraries
avrai:

SRF08/
        SonarSRF08.h
        SonarSRF08.cpp
        /examples
                      /SRF08
                               /SRF08.ino

Se le cose stanno così, aprendo il menu File/Esempi devi avere la voce SRF08 ed accanto l'esempio SRF08

riporto gli screen print:

Hai sbagliato ad allegare le immagini. hanno tutte il collegamento verso la tua home :wink:

OK, grazie a tutti, ora funziona tutto.

[RISOLTO] va aggiunto al titolo del 1° post del thread :wink:
L'ho fatto io per te :smiley: