Dopo essermi sbizzarito con prove di Client e WebServer adesso vorrei provare ad utilizzare la SD
Mi e' chiaro che non funzionano in contemporanea
A tale proposito ho recuperato il manualetto di Fabrizio Schiano a cui mi rivolgo per porre una domanda
Leggo :
Dovete essere sicuro di avere l’ultima versione di SdFatLib (libreria dell’IDE Arduino necessaria per interfacciarsi alle SD card) in quanto avrete bisogno di alcune delle nuove caratteristiche.
Io ho installato l'IDE 1.0 , l'hardware e' tutto rev.3
Ho fatto prove modificando gli esempi e singolarmente funziona tutto
Domanda:
L'inclusione di <SdFat.h> e <SdFatUtil.h> e' da considerarsi in quanto siamo in presenza della traduzione di un documento precedente alle ultime release di Arduino oppure e' effettivamente una cosa diversa da #include <SD.h> presente negli attuali esempi ??
Ti ringrazio
PS: ovviamente e' ben accolta la risposta di chiunque abbia fatto qualcosa circa l'argomento
E se mi buttate li qualche link magari arrivo subito al dunque senza googlare magari inutilmente
Il WebServer finche' non sovrascrivo dovrebbe essere raggiungibile da 93.185.125.140 ; E' il puro esempio dell'IDE leggermente rimaneggiato
Con questo mi confermi che SD.h contiene le precedenti librerie
lucadentella:
non funzionano insieme perché usano lo stesso pin di CS?
Ethernet usa il 10 metre la SD il 4
2 pinMode(10, OUTPUT); // set the SS pin as an output (necessary!)
3 digitalWrite(10, HIGH); // but turn off the W5100 chip!
4 uint8_t r = card.init(SPI_HALF_SPEED, 4); // Use digital 4 as the SD SS line
Come detto piu' sopra mi piace anche capire
La libreria che citi ha funzioni per "swappare" fra SD ed Ethernet oppure e' un mix di Ethernet , SD e altre funzioni aggiunte
Vado comunque a leggermi i post che mi hai indicato
(ottimo approccio ;))
più periferiche possono condividere il bus SPI, semplicemente quando vuoi "parlare" con loro devi attivarle mettendo a LOW il pin CS (se infatti guardi il datasheet vedrai che questo è indicato con una "tilde" davanti, ad indicare che è a "logica invertita")
spesso l'attivazione del chip è "nascosta" nella libreria: i comandi di libreria iniziano con un CS_LOW e terminano con un CS_HIGH...
Con la WebServerSD riesci a collegare un url con il relativo file sulla scheda, in più riesce a fare anche delle sostituzioni tra dei parametri predefiniti scritti nel file sulla sd e la lettura delle porte di arduino.
Intendi dire che potri mettere l'HTML sulla scheda ed utilizzarlo quando necessario anziche' sprecare prezioza memoria con i testi ?
Fino ad oggi ho usato la SdFat.h della 0022 e alla tua domanda posso rispondere si, i nomi dei file sono di 8 caratteri con estensione htm 3 caratteri (fat16)
ma domanda agli esperti......la lib SdFat.h della 0022 è diventata WebServerSD nella 1.0?
Intendi dire che potrei mettere l'HTML sulla scheda ed utilizzarlo quando necessario anziché sprecare preziosa memoria con i testi ?
Si!
Ima domanda agli esperti......la lib SdFat.h della 0022 è diventata WebServerSD nella 1.0?
Per quello che ne so no, la libreria WebServerSD implementa tutto il webserver con accesso al filesystem ma abbisogna di #include <SdFat.h> #include <SdFatUtil.h>
per gestire il filesystem, ho letto lo sketch della caldaia e include le due librerie.
Confermo che la libreria si occupa di gestire il bus spi tra sd ed ethernet, senza bisogno di nient'altro.
Ima domanda agli esperti......la lib SdFat.h della 0022 è diventata WebServerSD nella 1.0?
Confermo che la libreria si occupa di gestire il bus spi tra sd ed ethernet, senza bisogno di nient'altro.
Arghhhh
Co' 'sta storia degli IDE mi pare sia un bel casino
Ma il fatto di includere librerie precedenti puo' creare problemi visto che io sono arrivato con la 1.0 e non ho alcuna intenzione di destreggirmi con IDE precedenti
Gia' ho i miei problemi con questa ......
Ho recuperato i file
Diciamo che e' stato il classico buco nell'acqua
Intanto mi manca flash.h
Ma andando alla libreria SdFat e provando gli esempi non ne funziona alcuno mentre con gli esempi dell'IDE 1.0 la SD funziona
Non so se il file SD2...map venga richimato ma li dentro , l'unica parte il cui il pin di selezione e' il 4 risultano sbagliati gli altri ; almeno in confronto ad Arduino UNO Rev.3
Torno al DOC d Schiano e provo a fare qualcosa di mio scopiazzando dai vari esempi di lettura della SD
Allo stato attuale a me interessava leggere dei parametri dalla SD prima di inizializzare l'Ethernet per poterli personalizzare ; MAC IP & company
Poi se riuscivo anche a tirar fuori dalla SD una pagina HTML da popolare con qualche dato meglio altrimenti , memoria permettendo , la costruisco dentro al programma
Se avete qualche nota aggiuntiva , altrimenti grazie lo stesso
Non sono uno che si arrende XD
richiamare comunque le classi della libreria sdfatlib (Sd2Card, Sd2Volume, Sd2File...) per esigenze più complesse
Ho "esplorato" la directory della libreria SD ed ho visto che esiste una sottodirectory dove ci sono SdFat e compagnia
La domanda :
Quando viene incluso SD.h vengono di fatto utilizzati i file che sono nella directory SD delle librerie ed anche quelli su sottodir di questa ??
Giusto per curiosita'
Vistoooo ... vengono richiamati da SD.h
Comunque e' scontato che quando e' attiva la SD la Ethernet e' "morta" e viceversa
Per cui per fare le mie sperimentazioni ci pensero io a tirar SU e GIU i pin 4 e 10
Comunque e' scontato che quando e' attiva la SD la Ethernet e' "morta" e viceversa
Per cui per fare le mie sperimentazioni ci pensero io a tirar SU e GIU i pin 4 e 10 smiley-sad
perchè devi farlo tu? io sto usando la ethernet che invia dati di continuo e scrivo su SD i log eventi senza dire al 4 e 10 che devono fare le ho impostate nel setup una volta e basta.
pablos:
perchè devi farlo tu? io sto usando la ethernet che invia dati di continuo e scrivo su SD i log eventi senza dire al 4 e 10 che devono fare le ho impostate nel setup una volta e basta.
Porcassa la miseria .... e' quello che non riesco a incamerare nella materia grigia
Per favore .... dimmi dove e come succede questo
E magari se hai un pezzo di codice da studiare te ne saro' grato
Un'altra cosa
Se io vado a vedere gli esempi vedo che viene stampato direttamente il read
Io il read lo voglio su una variabile e siccome era l'IP ho fatto byte IP_Scheda , lo leggo e poi lo stampo
Ma se fossero testi ?
Dubito che si riesca leggere una riga ed inviarla su Ethernet , leggerne un'altra ed inviare e cosi via ; probabilmente chiudendo la SD per inviare su Ethernet il puntatore della riga si azzera
Oppure si puo' fare ??
@Pablos
if (htmlFile) {
while (htmlFile.available()) {
client.print(htmlFile.read(), BYTE);
}
Ti ho inseguito sul web ...
E ti ho trovato qui
Ho scopiazzato ma in fase di compilazione si arrabbia su quel BYTE
Lo ho brutamente tolto e il Server risponde sparando fuori una sfilza di numeri
Ovviamente Client e diventato EthernetClient e cosi pure il Server
Dai che ci sono ...quasi ; passami l'imbeccata dicendomi come lo hai risolto
Ti ho inseguito sul web ... smiley-grin
E ti ho trovato qui
ahahahhaa vero sono io, ero in crisi e non sapevo come fare, poi ho risolto :)
Ma cosa vorresti fare ? purtroppo ho tutto sulla 0022 mi devo adeguare :(, ma se posso
#include <SPI.h> #include <Ethernet.h> #include <Flash.h> // non mi ricordo perchè l'ho messa :D forse a te non serve #include <SdFat.h>
//#include <SdFatUtil.h> //serve se chiedi freeram ecc
// initialize the SD card
pinMode(10, OUTPUT); // set the SS pin as an output (necessary!)
digitalWrite(10, HIGH); // but turn off the W5100 chip!
card.init(SPI_FULL_SPEED, 4);
volume.init(&card);
root.openRoot(&volume);
void log_write()
{
//scrittura su file txt sd .... eventi
file.open(&root, "datalog.txt", O_APPEND | O_WRITE);
file.println(log_riga); // ovviamente log_riga è una String
file.close();
}
questo è quello che attualmente è operativo e funziona bene
ciao
pablos:
ahahahhaa vero sono io, ero in crisi e non sapevo come fare, poi ho risolto
Ma cosa vorresti fare ?
Purtroppo io sto usando 1.0 e mi rendo conto che tutto il casino nasce da li'
Hanno sconvolto l'organizzazione del sistema di sviluppo per cui esempi che magari potrebbero servirti non funzionano perche' sono fatti per la 022 o 023
Come gia' detto non sono arrendevole e mi sono dato da fare ad esplorare le librerie
Adesso metti SD.h la quale richiama dalla sottodirectory utility SDFat e SDFatutility ; quelle che hai incluso tu
Il Flash.h e' sparito ma probabilmente sara' stato inglobato anche questo
In un altro TRD mi dicevi " La tua , piu' che una richiesta , e' uno sfogo " ; hai voglia che un principiante ci sopravviva
Mi chiedi cosa vorrei fare :
Ho fatto un piccolo sistema che con dei sensori ( attualmente per strada ma sostituiti con potenziometri ) leggono Amper e direzione del flusso di corrente su un cavo
Mi serve per controllare il mio impianto fotovoltaico accendendo un paio di semafori che indicano se c'e' produzione e se nel contatore Enel l'energia sta' uscendo o entrando
Ho poi un controllo per inserire dei carichi solo se se c'e' flusso verso la rete ( la corrente prodotta e' piu' conveniente consumarsela )
Il tutto oltre su delle Spie a LED dovrebbe fornire una paginetta WEB con qualche informazione su dove sta andando la corrente
La SD mi serve per metterci la paginetta Html ed i parametri MAC IP etc della Ethernet
Sono al punto che leggo la SD e Funziona la paginetta in modo autonomo ; insieme non funzia
Ehhh .... ma ci arrivo , mica ho intenzione di mollare .