Otttimizzazione uso memoria

Salve a tutti
Vengo dal mondo della programmazione”tradizionale” e, dopo aver sviluppato uno Sketch
bello corposo, mi sono accorto che... in Arduino Yun non ci entra! :frowning: Ma questo stranamente me lo ha segnalato solo quando l'ho provato! Bene ho iniziato una serie di ottimizzazioni che fondamentalmente consistono nello spostare le costanti di stringhe, che sono la parte che nel mio Sketch occupa più spazio, nella Flash memory con PROGMEM e la macro F(). Buona parte delle costanti le ho messe in un file header, dato che molte sono comuni a più funzioni.

Mi è venuta in mente un'altra soluzione che potrebbe essere anche migliore. Posso memorizzare tutte le varie constanti di stringa in un file di testo su una SD che ho già dato che Yon ha la SD e richiamarle quando mi servono? oppure il gioco non vale la candela? Devo dire che non saprei come fare e quindi mi rivolgo a voi qualora abbiate già sfruttato questa possibilità. In pratica vorrei sapere se c'è la possibilità di memorizzare le costanti u file di testo e richiamarle di volta in volta quando servono allo Sketch.
Spero di essere stato chiaro
Grazie
Luigi

Certamente puoi memorizzare righe di testo nella SD e sicuramente puoi leggerle ... sempre se il numero di righe che devi memorizzare è superiore alla memoria che hai disponibile, altrimenti non ne vale la pena ... dato che comunque l'accesso alla SD è sicuramente più macchinoso (devi sapere esattamente dove andare a pescare la riga che ti interessa) e più lento.

Guglielmo

Dipende da quale memoria hai esaurito: tenere le stringhe in flash con F(), PSTR() e PROGMEM serve a risparmiare RAM. Fare come dici tu può servire a risparmiare ovviamente anche flash, ma se il problema è ancora la RAM è inutile.

stesso problema con arduino uno e display grafico, credo che nel mio caso, gestendo sensori di temperatura, a castigarmi siano le variabili float. Sto valutando di passare ad Arduino mega che dovrebbe essere la soluzione piu breve e meno tortuosa per un novizio come me. Forse sarebbe una soluzione da valutare anche per te Luigi

La yun è un MIPS con al suo interno un s.o. GNU/Linux chiamato OpenWrt, sulla yun hai tanta di quella RAM e tanta di quella flash che a riempirla potrebbe non bastarti una vita.
Tu invece stai solo usando la parte secondaria, ovvero il chip Avr che è montato insieme al MIPS.
In queste schede la cosa più logica è di usare il chip più grosso per le operazioni più lunghe e complicate, mentre la mcu più piccola per operazioni dove il tempo fa da padrone
Pertanto il mio consiglio è quello di approfondire lo studio su quella potentissima scheda, passare ad una mega sarebbe un downgrade.

Scusate l'ignoranza, prendendo in considerazione quello detto da vbextreme, come sfrutto le potenzialità della Yun.

Aggiungo anche che ho delle stringhe del tipo

relè gas comandato
relè gas non comandato
relè motori comandato
relè motori non comandato

potrei usare delle costanti in cui memorizzare parte delle stringhe intercambiabili es:

const String Crele="relè";
const String CRGas="gas";
const String CRMotori="motori";
const String CNon="non";
const String CCom"comandato";

e quindi comporre

const RGasComm=Crele+CRGas+CCom;
const RNGasComm=Crele+CRGas+CNon+CCom;

e così via, secondo riduco l'uso della memoria o è perfettamente inutile?
Grazie
Luigi