compilazione , di un principiante

salve
volevo costruire questa periferica per atari su base arduino.
ma mi sono imbattuto in un errore,

SIO2Arduino:36: error: 'getDeviceStatus' was not declared in this scope
DriveAccess driveAccess(getDeviceStatus, readSector, writeSector, format);
^
SIO2Arduino:36: error: 'readSector' was not declared in this scope
DriveAccess driveAccess(getDeviceStatus, readSector, writeSector, format);
^
SIO2Arduino:36: error: 'writeSector' was not declared in this scope
DriveAccess driveAccess(getDeviceStatus, readSector, writeSector, format);
^
SIO2Arduino:36: error: 'format' was not declared in this scope
DriveAccess driveAccess(getDeviceStatus, readSector, writeSector, format);
^
SIO2Arduino:37: error: 'getFileList' was not declared in this scope
DriveControl driveControl(getFileList, mountFileIndex, changeDirectory);
^
SIO2Arduino:37: error: 'mountFileIndex' was not declared in this scope
DriveControl driveControl(getFileList, mountFileIndex, changeDirectory);
^
SIO2Arduino:37: error: 'changeDirectory' was not declared in this scope
DriveControl driveControl(getFileList, mountFileIndex, changeDirectory);
^
SIO2Arduino:40: error: 'SdVolume' does not name a type
SdVolume volume;
^
/home/albe/SIO2Arduino-master/SIO2Arduino/SIO2Arduino.ino: In function 'void setup()':
SIO2Arduino:92: error: 'volume' was not declared in this scope
if (!volume.init(&card)) {
^
SIO2Arduino:100: error: 'volume' was not declared in this scope
if (!currDir.openRoot(&volume)) {
^
/home/albe/SIO2Arduino-master/SIO2Arduino/SIO2Arduino.ino: In function 'boolean format(int, int)':
SIO2Arduino:165: error: 'class SdFile' has no member named 'getFilename'
file.getFilename(name);
^
/home/albe/SIO2Arduino-master/SIO2Arduino/SIO2Arduino.ino: In function 'void changeDirectory(int)':
SIO2Arduino:298: error: 'volume' was not declared in this scope
if (subDir.openRoot(&volume)) {
^
Uso la libreria SdFat alla versione 2015.4.26 nella cartella: /home/albe/arduino-1.6.7/libraries/SdFat
Uso la libreria SPI alla versione 1.0 nella cartella: /home/albe/arduino-1.6.7/hardware/arduino/avr/libraries/SPI
exit status 1
'getDeviceStatus' was not declared in this scope
questo e l errori che mi restituisce , nella pagina del progetto indica di scaricare le libreirie sdfat , inserisce l indirizzo .ho scaricato il file zip e ho provato ad aggiungere tramite l opsione aggiungi libreria da file zip , ma mi da la cartella/file zip non contioene libreria valida.
quindi seguendo una quida ho scompattato il file e ho copiato nella cartella librariesw ho copiato la cartella sdfat ,pero mi da errore .
ovviamente prima di inserire la libreria mi dava immediatamente errore sdfat.h non trovata
grazie in anticipo per le risposte

**>albepancio: **Essendo questo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento, ti chiedo di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

non e il mio primo post cmq essendo passato tentissimo tempo dalla mia registrazione e non ricordandomi se mi sono gia presentato , lo faro subito , mi sembra il minimo

Grazie :slight_smile:

Ho letto la tua presentazione e ...
... intanto ti suggersico un paio di letture on-line, come QUESTA e QUESTA, dopo di che l'acquisto di un buon libro come QUESTO :wink:

Guglielmo

e per il problema che ho postato?hai qualche suggerimento?
io ho installato le librerie richieste ( ho fatto altre prove ed installato la versione 1,8 di arduino ide)
ma mi da sempre il solito errore :frowning:
grazie

Ma con l'IDE 1.8.1 come hai installato le librerie ? Tramite zip, tramite gestione librerie o a mano ?

tramite zip , qualdo seleziono il file zip scaricato mi da come errore nessuna libreria valida .
ho provato a copiare la libreria dentro la cartella liberiess , ma mi da quell errore che ho postato sopra .
con gestione librerie non sono riuscito ad installare la libreria che mi serve

Allora. Facciamo pochi passi alla volta. Secondo me meglio se butti la 1.8.1 e la reinstalli, MA usando semplicemente la versione ZIP. La spacchetti in una cartella nota, esempio C:\ e la nomini ARDUINO (evita di installare sotto c:\programmi)
Dentro a questa cartella C:\Arduino dove hai tutto l'ide 1.8.1 creai una sottocartella nominata portable
Così tutto Arduino e libreria starà dentro ad una unica cartella c:\arduino
dentro alla cartella portable avrai anche la cartella per sli sketch c:\Arduino\portable\sketchbook
e poi la libraries: c:\Arduino\portable\sketchbook\libraries
QUESTA è la cartella in cui aggiungere librerie di terze parti.
La libraries dentro l'IDE è SOLO per le librerie fornite da Arduino team (C:\Arduino\libraries) !!

P.S. poi se citi librerie e non metti uno straccio di link, come possiamo aiutarti ?
"Uso la libreria SdFat alla versione 2015.4.26" dove la troviamo ?
Il progetto che stai provando, un link ???

scusate la mancanza .:slight_smile:
allora il progetto e questo : Whizzo Software
la libreria e questa : http://code.google.com/p/sdfatlib/
per arduino ide io non uso win ma linux e mi crea una cartella in home nominata come arduino-1.8.1
dove ci sono tutte le cartelle exzmples , java , hardware ..ecc
grazie pe rle risposte...

ho seguito il tuo consiglio , ho creato le cartelle che mi hai consigliato e dentro ho messo la cartella la cartella sdfat
ho provato anche a copiare il contenuto della cartella sdfat.
ma come faccio ad aggiungerle ?
grazie

allora ho fatto questa prova , ho aggiunto la libreria tramite sketch .. aggiungi librerie da cartello o zip poi ho selezionato la cartella sdfat , mi restituiewsce libreria aggiunta e adesso mi da questi errori
Arduino:1.8.1 (Linux), Scheda:"Arduino Nano, ATmega328"

SIO2Arduino:38: error: 'getDeviceStatus' was not declared in this scope
DriveAccess driveAccess(getDeviceStatus, readSector, writeSector, format);
^
SIO2Arduino:38: error: 'readSector' was not declared in this scope
DriveAccess driveAccess(getDeviceStatus, readSector, writeSector, format);
^
SIO2Arduino:38: error: 'writeSector' was not declared in this scope
DriveAccess driveAccess(getDeviceStatus, readSector, writeSector, format);
^
SIO2Arduino:38: error: 'format' was not declared in this scope
DriveAccess driveAccess(getDeviceStatus, readSector, writeSector, format);
^
SIO2Arduino:39: error: 'getFileList' was not declared in this scope
DriveControl driveControl(getFileList, mountFileIndex, changeDirectory);
^
SIO2Arduino:39: error: 'mountFileIndex' was not declared in this scope
DriveControl driveControl(getFileList, mountFileIndex, changeDirectory);
^
SIO2Arduino:39: error: 'changeDirectory' was not declared in this scope
DriveControl driveControl(getFileList, mountFileIndex, changeDirectory);
^
SIO2Arduino:42: error: 'SdVolume' does not name a type
SdVolume volume;
^
/home/albe/Scaricati/SIO2Arduino-master/SIO2Arduino/SIO2Arduino.ino: In function 'void setup()':
SIO2Arduino:94: error: 'volume' was not declared in this scope
if (!volume.init(&card)) {
^
SIO2Arduino:102: error: 'volume' was not declared in this scope
if (!currDir.openRoot(&volume)) {
^
/home/albe/Scaricati/SIO2Arduino-master/SIO2Arduino/SIO2Arduino.ino: In function 'boolean format(int, int)':
SIO2Arduino:167: error: 'class SdFile' has no member named 'getFilename'
file.getFilename(name);
^
/home/albe/Scaricati/SIO2Arduino-master/SIO2Arduino/SIO2Arduino.ino: In function 'void changeDirectory(int)':
SIO2Arduino:300: error: 'volume' was not declared in this scope
if (subDir.openRoot(&volume)) {
^
exit status 1
'getDeviceStatus' was not declared in this scope

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"
scusate i tanti post ma non so da che parte cominciare

scusate ma non riesco a trovare un icona edit.
in gestione librerie risulla installata la libreria sdfat

ammetto la mia totale ignoranza :slight_smile: ma in questa pagina , pur senza nessuna cognizione di causa ho trovato la soluzione

aggiungendo queste righe di codice il problema e sparito , mi compila tutto regolarmente ,
adesso appena ho costruito il circuito provero se funziona tutto
grazie a tutti per le risposte .
p.s. mi piacerebbe avere una spiegazione in parole mooooolto povere :slight_smile: del perche con quelle righe funziona cosi da capirci qualcosa
grazie

Quali righe hai aggiunto ? Quel link ha molti post.

scusa , ho aggiunto questa
DriveStatus* getDeviceStatus(int deviceId);
SectorDataInfo* readSector(int deviceId, unsigned long sector, byte data);
boolean writeSector(int deviceId, unsigned long sector, byte
data, unsigned long length);
boolean format(int deviceId, int density);
int getFileList(int startIndex, int count, FileEntry *entries);
void mountFileIndex(int deviceId, int ix);
void changeDirectory(int ix);

Quelle dovrebbero essere già fornite con la libreria dentro ad un apposito file .h

non so ,
so solo che aggiungendo questa parte la compilazione va a buon fine ,

Il progetto una una lib che non c’e’ più: http://code.google.com/p/sdfatlib/
Probabilmente scarichi un’altra SdFat lib mancante di qualcosa.

In generale: una libreria di solito si compone di un file .cpp dove ci sono le funzioni che userai ma anche un file .h
dove ci sono le dichiarazioni di quali sono e di quali parametri vogliono.
Supponiamo dentro la libreria c’e’ una funzione che fa la somma di 2 numeri interi. Nel .cpp c’e’ la funzione vera e propria.
Nel tuo sketch c’e’ la chiamata alla funzione, esempio x=somma(2,4);
il compilatore compila i file .cpp e .ino in maniera separata. Lo sketch .ino deve avere come prima cosa un
#include <mialibreria.h> che richiama della libreria un file dove è descritto, esiste una funzione che si chiama somme, che vuole due numeri e che ritorna un numero. Senza questo file il compilatore non saprebbe se nel .ino la chiamata =somma(2,4) è corretta.

grazie per la risposta