Buonasera a tutti,
ho intenzione di creare un semplice programma che legga dati contenuti su file, li salvi su di un vettore che viene poi usato per comandare i led.
Per realizzarlo utilizzo una ethernet shield in cui è inserita una microSD.
Al momento mi sono limitato a scrivere il codice riguardante l'acquisizione di dati da file, visto che è la parte "più complicata". Il file è del tipo:
110
001
000
....
Ho pensato quindi di creare un vettore di tipo char che memorizzi di volta in volta una riga di file e la usi per il comando dei led. Il problema è sorto proprio nella fase di lettura. Vorrei che all'inizio della funzione loop il vettore acquisisca una riga di codice, la utilizzi per comandare i led e riprenda dalla riga successiva all'inizio del prossimo loop. Tuttavia non riesco a formulare in termini di codice il fatto che riprenda dalla riga successiva, ho pensato di contare gli "/n" e memorizzarli in un contatore in modo da tenere conto delle righe, ma non mi sembra la soluzione ottimale. Il codice relativo alla lettura è:
#include <SD.h>
const unsigned int pinSD = 4; // pin di default della ethernet shield
File myFile;
char comando[4];
void setup() {
Serial.begin(9600);
// On the Ethernet Shield, CS is pin 4. It's set as an output by default.
// Note that even if it's not used as the CS pin, the hardware SS pin
// (10 on most Arduino boards, 53 on the Mega) must be left as an output
// or the SD library functions will not work.
pinMode(10, OUTPUT);
if (!SD.begin(pinSD)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
}
void loop()
{
// open the file
myFile = SD.open("comando.txt");
if (myFile) {
int i = 0;
while (myFile.available() && i < 4 ) {
comando[i] = myFile.read();
i++;
}
// close the file
myFile.close();
}
else {
// if the file didn't open, print an error:
Serial.println("error opening comando.txt");
}
Serial.println("il vettore contiene: ");
int j = 0;
while (j<4) {
Serial.print(comando[j]);
j++;
}
Serial.println();
}
In questo modo naturalmente il programma salva su vettore sempre la prima riga di codice, in che modo posso scorrere via via le varie righe del file?
Grazie mille a tutti.