Come srivere e leggrere una stringa dalla Eeprom di Arduino

  • Claudio_F
  • Premium Utente
  • Premium Utente
Di più
8 Anni 1 Mese fa #6 da Claudio_F
Nelle istruzioni ready e write, il primo termine è l'indirizzo della eeprom, quindi se il ciclo for metti da 10 a 20, scrivi e leggi le locazioni da 10 a 20
I seguenti utenti hanno detto grazie : Guido

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Guido
  • Autore della discussione
  • Platino Utente
  • Platino Utente
Di più
8 Anni 1 Mese fa #7 da Guido
Ciao sto cercando di scrivere e leggere nella cella 15 la parola Ciao e nella 17 Felino, solo che leggo sempre in sequenza: Ciao Felino, per cortesia dove sbaglio?
Code:
#include <EEPROM.h> int a = 10; // Imposta due variabili a e value la prima utile come indice per scorrere le celle, int value; // la seconda memorizzerà i valori letti dalla EEPROM int b = 15; // Imposto indice celle per string int c = 17; // Imposto indice celle per string char string[] = "Ciao "; //Scrivo le parole da memorizzare char cstring[] = "Felino "; //Scrivo le parole da memorizzare void setup() { Serial.begin(9600); EEPROM.write(10, 123); // Valore massimo impostabile 255. Scrivo dalla cella 10 il valore 123 EEPROM.write(b, string[12]); EEPROM.write(c, cstring[7]); } void loop() { value = EEPROM.read(a); // Leggo il valore della cella passata come parametro alla funzione read, // che hai definito e impostato in int a string[12] = EEPROM.read(b); // Leggo il valore della cella passata come parametro alla funzione string cstring[7] = EEPROM.read(c); // Leggo il valore della cella passata come parametro alla funzione string /* Scrivo sul monitor seriale i valori letti, la colonna di sinistra mostra il valore dell’indice della cella, la colonna di sinistra il valore letto */ Serial.print(a); Serial.print("\t"); Serial.print(value); Serial.print(string); Serial.print(cstring); Serial.println(); a = a + 1; // Incremento il valore di a di un punto, al prossimo ciclo loop() if (a == 20) // Definisco un limite di cella, per evitare errori dello sketch cercando di leggere valori a = 10; // di cella superiori a quelle disponibili delay(500); // Definisco un tempo di attesa tra una lettura e la successiva. }// loop

Mi interessa visualizzare a sinistra i numeri delle celle.

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Claudio_F
  • Premium Utente
  • Premium Utente
Di più
8 Anni 1 Mese fa #8 da Claudio_F
Ciao, cerco di capire:
1) definisci string = "Ciao " e cstring = "Felino " come due array di tipo char.
2) scrivi 123 nella loc 10 della eeprom
2) nella loc 15 della eeprom scrivi il contenuto dell'array string[12], ma nella dichiarazione l'indice andava da 0 a 5 (Ciao \n)
3) nella loc 17 della eeprom il contenuto dell'array "cstring[7] che dovrebbe contenere '\n' (Felino \n)
4) carichi in value il contenuto della loc puntata da 'a'
5) ricarichi il contenuto della loc 15 della eeprom nell'array "string[12], oltre al limite che era 5 e risulta quindi ininfluente
6) ricarichi il contenuto della loc 17 della eeprom nell'array "cstring" con indice 7.
praticamente sia string che cstring mantengono il valore originale che ti viene stampato ad ogni ciclo del loop.

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Claudio_F
  • Premium Utente
  • Premium Utente
Di più
8 Anni 1 Mese fa #9 da Claudio_F
#include <EEPROM.h>
int a = 0;
char value;
char string[] = "Ciao "; // 5 caratteri+carattere NULL�
char cstring[] = "Felino "; // 7 caratteri+carattere NULL�

void setup()
{
Serial.begin(9600);

for (a = 0 ; a<6 ; a++) // scrivi "Ciao \n" nella eeprom
{
EEPROM.write(a, string[a]);
}

for (a = 0 ; a<8 ; a++) // scrivi "Felino \n" nella eeprom
{
EEPROM.write(a+10, cstring[a]);
}

}

void loop()
{
for (a = 0 ; a<6 ; a++)
{
value = EEPROM.read(a);
Serial.print(a);
Serial.print("\t");
Serial.println(value);
}

for (a = 10 ; a<18 ; a++)
{
value = EEPROM.read(a);
Serial.print(a);
Serial.print("\t");
Serial.println(value);
}
delay(500);
}
I seguenti utenti hanno detto grazie : Guido

Si prega Accesso o Crea un account a partecipare alla conversazione.

Moderatori: Mauro Laurenti

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Forum - Ultimi messaggi