Go Down

Topic: Stringa sull'EEPROM (Read 1 time) previous topic - next topic

cavde


Prendo il tuo esempio della scrittura...
Se la parola è sotto i 10 caratteri?!
Esempio prendiamo la parola "Ciao",
Indirizzo di memoria / Carattere
0 / C
1 / i
2 / a
3 / o

Lui continua a salvare fino all'indirizzo 10, ma cosa salva dall'indirizzo 4 in poi?


mi sembra che con un ciclo for continui a leggere finchè non trovi il carattere '\0' che indica la fine della stringa....quindi se scrivi 'ciao' in realtà stai scrivendo 'ciao\0' e occupi uno spazio char in più...
almeno mi sembra che sia così...
Se gommo tiene,io vince gara! Se gommo non tiene,io come bomba dentro montagna

leo72

Devi fare un ciclo do..while che legga finché ci sono byte sulla linea, salvare tutto in un char* e poi convertire.
do {
..
} while (Serial.available()>0);

Xfox


Devi fare un ciclo do..while che legga finché ci sono byte sulla linea, salvare tutto in un char* e poi convertire.
do {
..
} while (Serial.available()>0);



Caspita come ho fatto a non pensarci?!
Potrei fare un ciclo while del tipo:
Code: [Select]

int l = 0;
while(Serial.available() > 0){
EEPROM.write(l, testo.charAt(l));
l++;
}

Xfox's Blog, Elettronica, informatica e tant'altro: http://www.xfox.it

Xfox

UP!

Nessun aiuto su come ricevere da seriale un valore int?
Xfox's Blog, Elettronica, informatica e tant'altro: http://www.xfox.it

leo72

Un int è un numero a 2 byte. Mandalo scomposto nel byte-alto e byte-basso e poi ricomponi il numero usando magari le operazioni sui bit

Xfox

Non riesco a capire. Potresti farmi un esempio?
Xfox's Blog, Elettronica, informatica e tant'altro: http://www.xfox.it

leo72

Usa le funzioni seguenti per la trasmissione
http://arduino.cc/en/Reference/LowByte
http://arduino.cc/en/Reference/HighByte

Leggi poi i 2 byte e li ricombini insieme usando le operazioni sui bit:
int numero1, numero2;
numero1 = Serial.read();
numero2 = numero1 << 3;
numero1 = Serial.read();
numero2 |= numero1;

Prova così, dovrebbe andare.

Go Up