Scrivere una stringa sulla EEprom

Ciao a tutti, è il primo messaggio che scrivo e colgo l'occasione per fare a tutti voi i complimenti per il "lavoro" che fate aiutando chi come me è da poco che sbatte la testa su arduino.
Ora passo al problema...vorrei scrivere nella EEprom una o più parole e visualizzarle sul dispaly quando premo un pulsante. Perfetto so fare tutto tranne memorizzare sulla eeprom il testo ;D
Fino ad ora sono riuscito a farlo solo con una lettera!!!!

Benvenuto nel club... sia di arduino sia di chi combatte con le stringhe.
Ho fatto solo poche prove con le eeprom e credo proprio che tocca salvare una lettera per volta! Io ho convertito da char a int e ho salvato ogni singolo valore in una cella di memoria ma ripeto non sono esperto, quindi se c'è un altro modo fatevi avanti gente, non siate timidi...

eh, anche secondo me è l'unico modo! :slight_smile:
potresti usare un ciclo for per salvare ogni lettera della stringa

Un carattere alla volta usando la libreria EEPROM.
Il Arduino con il ATmega328 ha 1 k Byte di eeprom.
In alternativa si puó usare anche la flash, dove si deve condividere lo spazio disponibile insieme al sketch.
Anche per questo sono librerie. Resta comunque il fatto che si deve lavorare a caratteri singoli.
Si puó mettere anche un EEprom con interfaccia I2C che ci sono fino a 256 kiloByte, nel caso manchi lo spaio al eeprom interno. comunque resta anche qua caratteri singoli.
Saluti Uwe

ricordatevi che l'ultimo carattere deve essere lo '/0' indicatore di fine stringa. Le stringhe in C non esistono, come negli altri programmi in realtà sono un'array di char. Per modificare le stringhe c'è la libreria string.h

ragazzi è troppo se vi chiedo di farmi un esempio??

Salve ragazzi,
mi sto anch'io accingendo a fare una cosa del genere.
Ho un arduino 2009 e voglio provare a fare una scrittura di un file all'interno della eeprom.
Nell'IDE di arduino ho visto che c'è del codice già fatto, che in particolare nella loop ha questo codice:

void loop()
{
// need to divide by 4 because analog inputs range from
// 0 to 1023 and each byte of the EEPROM can only hold a
// value from 0 to 255.
int val = analogRead(0) / 4;

// write the value to the appropriate byte of the EEPROM.
// these values will remain there when the board is
// turned off.
EEPROM.write(addr, val);

// advance to the next address. there are 512 bytes in
// the EEPROM, so go back to 0 when we hit 512.
addr = addr + 1;
if (addr == 512)
addr = 0;

delay(100);
}

ma se io invece ci voglio scrivere "Hello World 2010!" come devo fare?

In più una cosa, quando faccio l'upload sul mio arduino mi esce questo errore:

avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Grazie per l'aiuto

NOTE:
io utilizzo:

  • arduino 2009 con atmega368;
  • xp con sp2

Grazie ancora

Questo codice scrive nella EEPROM a partire dall'indirizzo 0. Attento, se l'array è non inizializzato o non contiene lo '\0' scrive tutta la EEPROM con valori casuali e poi esce dal ciclo. se l'array è > della EEPROM scrive finc'è c'è spazio e esce dal ciclo(col break)

char stringa[30] = "QUELLO CHE VUOI SCRIVERE\0";
int i=0, addr=0;
while (stringa[30]!='\0'){
 // write the value to the appropriate byte of the EEPROM.
 // these values will remain there when the board is
 // turned off.
 EEPROM.write( addr, stringa[i] );

 //advance to next char
 i++;

 // advance to the next address.  there are 512 bytes in
 // the EEPROM, so go back to 0 when we hit 512.
 addr = addr + 1;
 if (addr == 512){
   Serial.println("Non c'è abbastanza spazio!");
   break;
}

}

Grazie lesto,
e invece per il problema dell'upload! da cosa può dipendere?
ho provato a disabilitare il firewall, ho messo nel set-up la corretta board e anche la porta (che tra l'altro è solo la com1).
Come posso risolvere questo problema?

grazie ancora

Ciao installer

L' Arduino 2009 non é mai sulla COM1 perché quella é la Seriale fisica che ha il PC.
Hai installato il driver del interfaccia Seriale-USB?

ciao Uwe

Ciao uwefed,
sì hai ragione, dovevo installare i driver. ora che li ho installati l'upload riesce!
Grazie.

:wink:

Bene
congratulazione
Uwe