Poca memoria disponibile... Come faccio ad usare l'SD card (nell'ethernetShield)

Sto progettando un'impianto domotico personale... Però ad ora ho riscontrato problemi con la memoria disponibile in arduino uno, e... avendo l'ethernet Shield con integrato l'sd card slot vorrei sapere come salvare in memoria sd lo sketch a cui sto lavorando (che riempie completamente la memoria di arduino)
Grazie in anticipo!

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Per diminuire lo spazio occupato dalle frasi fisse usa F() esempio:

client.println( F("HTTP/1.1 200 OK") );

Qui un tutorial su pagine web su SD:

avendo l'ethernet Shield con integrato l'sd card slot vorrei sapere come salvare in memoria sd lo sketch a cui sto lavorando

Non puoi.

Se tu avessi letto un po' il forum prima di fare acquisti, ti saresti accorto che l'ultima scheda che si compra per fare domotica e webserver è proprio la UNO

ciao

Mi sono presentato, ed ora preciso che il mio arduino è della serie : UNO Rev3
cambia qualcosa in gioco?

Non cambia nulla, il programma (sketch) deve trovarsi dentro la flash di (32Kb) del micro, non puoi usare la SD come hardisk. Questo vale per tutti i micro, il programma per poter girare deve essere caricato, puoi usare la SD come archivio di dati uscenti da elaborazioni del tuo programma o come input di parametri tipo variabili, ma non può contenere il programma che il micro dovrebbe eseguire.

Quello che intendi tu è eseguito da microprocessori che possiedono un sistema operativo che piò a sua volta caricare programmi di terze parti da una memoria di massa.

Vedi differenza tra CPU e MCU

In ogni caso un impianto domotico che ha un "cervello" montato su CPU ha bisogno comunque di un MCU + interfacce di potenza per eseguire ed attuare oltre che a leggere input analog o digit che siano.

Arduino ti consente di avere un piccolo programma che gestisce quache input e qualche output e reagisce in modo prestabilito, ti consente tramite eth shield o seriale di avere una piccolissima interfaccia utente, ma tutto nei limiti molto ristretti dei 32Kb e dei 16Mhz nel caso della UNO

Quindi questo è un quadro generico, nello specifico tu cosa vuoi fare?

ciao

Puoi usare al posto del Arduino UNO il Arduino MEGA2560. Quello ha piú memoria Flash e Ram.
Puoi anche scrivere meglio lo sketch. Come principiante si tende a usare funzioni che consumano parecchia memoria.

Ciao Uwe

Grazie mille, provvedo a procurarmi un arduino mega, utilizzerò l'altro per un secondo mio progetto... NON VA SPRECATO NULLA!
Grazie Buona giornata!

Si, ma non è che ci sguazzi molto di più con questa IDE sulla 2560 non vai oltre i 128Kb .. basta che stai attento a non sforare.

pablos:
Si, ma non è che ci sguazzi molto di più con questa IDE sulla 2560 non vai oltre i 128Kb

Quel problema non c'è più dal IDE 1.5.qualcosa, è stato risolto nel momento in cui sono passati dalla toolchain gnu avr-gcc alla toolchain avr-gcc di Atmel che prevede le varie patch di compatibilità con tutti i loro micro.
L'attuale IDE 1.6.1 è allineato con la più recente release della toolchain Atmel.

L'attuale IDE 1.6.1 è allineato con la più recente release della toolchain Atmel.

Questa non l'avevo ancora letta ... grazie
Comunque fare un programma da 256K ne hai da scrivere :slight_smile:

ciao

pablos:
Questa non l'avevo ancora letta ... grazie
Comunque fare un programma da 256K ne hai da scrivere :slight_smile:

Se è solo codice è quasi impossibile, però se usi un display grafico è un attimo riempire la flash con i vari font, icone, testi, etc.
Sto completando in questi giorni un programma che gira sul Mega2560 e sono già arrivato a oltre 150k di flash impegnata, di codice puro non credo siano più di 40-50k, tutto il resto sono lut, vari font per il TFT, una ventina di icone, un logo grafico.
Se lavori con codice di queste dimensioni è caldamente consigliato caricarlo con un buon programmatore hardware, p.e. AVRISP MKII, settato per un clockbit di 4 MHz altrimenti ci metti una vita tramite bootloader, ma pure con lo sketch ISP visto che lavora ancora più lento del bootloader :slight_smile: