Ho la necessità di mettere delle domande su un file di testo (che sarà sulla scheda sd), ora mi è stato consigliato di far leggere ad arduino queste domande dal file e inserirle in un array, ma come la faccio fare questa operazione?
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- qui le pinout delle varie schede by xxxPighi: Pinout
- qui una serie di link generali utili: Link Utili
@jackerjk: ti rammento che sei su una piccola MCU che ha solo 2KB di SRAM ... quindi ... fai bene i conti perché, ogni singola lettera di ogni singola domanda che leggi dalla SD, occupa un byte e ... riempire con delle stringhe la SRAM è un'attimo ... :
Premesso questo, SRAM permettendo, non devi fare altro che dichiarare un array di 'char' delle dimensioni adatte a contenere le domande (quindi, ogni riga del massimo numero di caratteri della più lunga domanda x N righe quante sono le domande) e leggere dalla SD riga per riga e copiarla nel giusto elemento dell'array.
A seconda di come sono le domande (lunghezza di ciascuna domanda simile o dissimile dalle altre) in questo modo potresti aver un enorme spreco di memoria e quindi, un altra soluzione, potrebbe essere l'uso, al posto delle stringhe classiche del 'C' di un array di String tipico del 'C++' che vengono allocate dinamicamente ... con le problematiche di cui occorre però poi tenere conto quando si alloca dinamicamente della memoria.
In ogni caso, entrambe le soluzioni ti portano a rischio esaurimento SRAM ... quindi, come ti ho detto all'inizio, verifica bene quante sono queste domande e quanti bytes occupano.
Guglielmo
gpb01:
@jackerjk: ti rammento che sei su una piccola MCU che ha solo 2KB di SRAM ... quindi ... fai bene i conti perché, ogni singola lettera di ogni singola domanda che leggi dalla SD, occupa un byte e ... riempire con delle stringhe la SRAM è un'attimo ... :Premesso questo, SRAM permettendo, non devi fare altro che dichiarare un array di 'char' delle dimensioni adatte a contenere le domande (quindi, ogni riga del massimo numero di caratteri della più lunga domanda x N righe quante sono le domande) e leggere dalla SD riga per riga e copiarla nel giusto elemento dell'array.
A seconda di come sono le domande (lunghezza di ciascuna domanda simile o dissimile dalle altre) in questo modo potresti aver un enorme spreco di memoria e quindi, un altra soluzione, potrebbe essere l'uso, al posto delle stringhe classiche del 'C' di un array di String tipico del 'C++' che vengono allocate dinamicamente ... con le problematiche di cui occorre però poi tenere conto quando si alloca dinamicamente della memoria.
In ogni caso, entrambe le soluzioni ti portano a rischio esaurimento SRAM ... quindi, come ti ho detto all'inizio, verifica bene quante sono queste domande e quanti bytes occupano.
Guglielmo
Eh infatti temevo proprio questo, ma se facessi un ciclo con una variabile che assume ogni giro una domanda diversa?
Spero di essermi spiegato.
Giacomo