Go Down

Topic: Qualcuno può aiutarmi a decifrare questi errori? (Read 2616 times) previous topic - next topic

9six4

Scusate sempre l'ignoranza e grazie per la pazienza, ma quali sono definite "librerie fornite con l'IDE" e quali non?

uwefed

Le trovi nella cartella libraries.
In linea di massima queste: http://arduino.cc/en/Reference/Libraries
Ciao Uwe

uwefed


Le librerie non distribuite con l'IDE io normalmente le tengo in sketchbook/libraries per separarle da quelle di Arduino. Nel caso di un aggiornamento dell'IDE le ho sempre e comunque e non sono costretto a reinstallarle.

Tu usi LINUX.
LE cose sono diverse da win.
Ciao Uwe

Michele Menniti



Le librerie non distribuite con l'IDE io normalmente le tengo in sketchbook/libraries per separarle da quelle di Arduino. Nel caso di un aggiornamento dell'IDE le ho sempre e comunque e non sono costretto a reinstallarle.

Tu usi LINUX.
LE cose sono diverse da win.
Ciao Uwe

No, anch'io faccio la stessa cosa: in Documenti ho creato una cartella "Personale" in cui ho le sottocartelle hardware e libraries; qui tengo  il core Tiny e 644/1284 e le librerie sia tiny che quelle aggiuntive ad Arduino. In pratica o tre diversi file boards.txt che mi vengono aperti contemporaneamente, così come le lib in due cartelle differenti funzionano anche in contemporanea. Io ho Win XP PRO, ma anche sul 7 è la stessa cosa.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

9six4

Io ho la cartella c:\Programmi\arduino-1.0\libraries

in essa ci sono varie cartelle con gli esempi forniti con l'IDE. In ognuna di esse sono presenti le librerie sottoforma di file .cpp e .h ed oltre a queste è presente un altra cartella "examples" con dentro altre cartelle con il nome-esempio e dentro il file sketch.
Basta che io replichi questa struttura?

leo72

@Uwe:
cambia il percorso di dove hai memorizzato la cartella degli sketch ed il suo nome, ma non la sostanza.
Su Linux normalmente si trova in /home/nomeUtente/sketchbook, su Windows sotto /Documenti/Arduino (non è una regola fissa, puoi anche cambiargli nome, come ha fatto Michele).
All'interno di quella crei la cartella libraries e hardware: nella prima ci metti le "tue" librerie, nella seconda i core aggiuntivi.

@9six4:
leggi qui sopra

9six4

Ciao Leo,
ho fatto come mi hai detto tu, ho creato le cartelle libraries e hardware nella dir documenti\arduino.
All'interno di hardware ho creato la cartella con lo stesso nome dello sketch e ci ho messo dentro il relativo sketch. All'interno della cartella libraries ho messo le librerie che lo sketch dichiara all'inizio:

Code: [Select]
#include <SdFat.h>  //library for the SD card shield, written by William G 'fat16lib'
#include <Wire.h>
#include "RTClib.h" //for the real time clock on the SD card shield, from JeeLabs
#include <LiquidCrystal.h> //for the LCD display


Quando faccio partire lo sketch però mi vengono fuori i seguenti errori:

Code: [Select]
temp_mux_proto_v7.cpp:24:86: error: SdFat.h: No such file or directory
temp_mux_proto_v7.cpp:26:82: error: RTClib.h: No such file or directory
temp_mux_proto_v7.pde:-1: error: 'RTC_DS1307' does not name a type
temp_mux_proto_v7.pde:-1: error: 'DateTime' does not name a type
temp_mux_proto_v7.pde:-1: error: 'Sd2Card' does not name a type
temp_mux_proto_v7.pde:-1: error: 'SdVolume' does not name a type
temp_mux_proto_v7.pde:-1: error: 'SdFile' does not name a type
temp_mux_proto_v7.pde:-1: error: 'SdFile' does not name a type
temp_mux_proto_v7.cpp: In function 'void setup()':
temp_mux_proto_v7.pde:-1: error: 'now' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'RTC' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'card' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'volume' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'card' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'root' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'volume' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'file' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'root' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'O_CREAT' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'O_EXCL' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'O_WRITE' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'file' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'file' was not declared in this scope
temp_mux_proto_v7.cpp: In function 'void loop()':
temp_mux_proto_v7.pde:-1: error: 'now' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'RTC' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'file' was not declared in this scope
temp_mux_proto_v7.cpp: In function 'void timeReset()':
temp_mux_proto_v7.pde:-1: error: 'now' was not declared in this scope
temp_mux_proto_v7.cpp: In function 'int saveInt()':
temp_mux_proto_v7.pde:-1: error: 'now' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'RTC' was not declared in this scope
temp_mux_proto_v7.cpp: In function 'int lcdInt()':
temp_mux_proto_v7.pde:-1: error: 'now' was not declared in this scope
temp_mux_proto_v7.pde:-1: error: 'RTC' was not declared in this scope

leo72

Scusa, ma ho detto che nella cartella separata è bene metterci le librerie che non sono quelle distribuite con l'Arduino.

Le librerie non distribuite con l'IDE io normalmente le tengo in sketchbook/libraries per separarle da quelle di Arduino. Nel caso di un aggiornamento dell'IDE le ho sempre e comunque e non sono costretto a reinstallarle.

Quindi SD, Wire e LiquidCrystal dovresti lasciarle dove sono, cioè all'interno dell'IDE. Solo la RTClib dovresti metterla di là.
Ma questa non dev'essere una regola né una mia imposizione né una soluzione al tuo problema: è solo un metodo che adotto e che consiglio per tenere le cose separate: le proprie modifiche all'IDE sono così in una cartella separata. In caso di aggiornamento dell'IDE, non devi stare a ricopiare nuovamente le librerie all'interno della cartella /libraries dell'IDE.
Detto questo, l'IDE non ti vede le librerie, segno forse che le hai copiate male. Forse anche nel caso dell'altra libreria il problema potrebbe essere questo.

9six4

EVVAI!!!  XD
Ce l'ho fatta! Vi spiego: ho provato a replicare la struttura dell'IDE ovvero ho messo le varie librerie all'interno della cartella arduino-1.0\libraries ognuna all'interno della propria cartella, con nome uguale al file .h e .cpp et voilà! Ora tutto sembra funzionare!
Grazie a tutti per l'aiuto, siete stati veramente gentilissimi!

uwefed


lesto


Da quel poco che ci capisco, di solito da questa serie di errori se non trova la libreria che si aspetta, ovvero il file istream.cpp nella radice precedente alla cartella dove è salvato lo sketch.

e il file .h? l'include deve usare le " " per cercare nella stassa cartella (path relativa alla posizione corrente), con il <> cerca solo nelle cartelle dell'IDE e del compilatore (path assolute)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

9six4

lesto scusa,
facendo un esempio per Arduino 1.0 installato su Win XP Pro:

< >  =  Path assolute  =  c:\Programmi\arduino-1.0\libraries

" "  =  Path corrente =  documenti\nome_sketch   ?

lesto

nel path assolute ci vanno anche le cartelle include del compilatore e chissà cos'altro.

il relativo invece prende come base di partenza la path da cui lanci il programma di compilazione/link.
Quindi nel caso arduino la path del file .ard
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

9six4

Approfitto della tua gentilezza per porti altre 2 domande:
a cosa serve il file keywords? Perchè ci sono più estensioni per i file arduino (.ino .pde .ard)? Cosa cambia?

lesto

scusa, ho scitto .ard, quanto invece è corretto .ino, questo perchè prima di arduino 1.0 si chiamava .pde e devo ancora farmi entrare in testa la nuova estensione.
Il file keyword serve per "colorare" il codice nell'editor, in pratica dice che la parla X va fatta in colore Y, quindi nulla di utile ai fini del programma in se
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up