salvare stringa

salve a tutti. io volevo salvare una stringa (max 30 caratteri), e questa sringa deve essere letta e scritta tramite seiale. dove la posso salvare e come? :cold_sweat:

Credo ti convenga salvarla come in un array di char.....

A quanto vedo abbiamo postato un post molto simile a distanza di due minuti(perdonatemi, ma non me ne ero accorto). Teniamoci in contatto :D

scusa la mia ignoranza ratto ma come si fa?

raustina: scusa la mia ignoranza ratto ma come si fa?

il vettore o array non è altro che una variabile con tante sottovariabili chiamate indici, quindi una struttura dati.ti serve nel caso in cui sai già quanto è lunga la stringa, di conseguenza se è lunga 16 caratteri dichiari un vettore da 16 caratteri: char vet16 Char perchè ti vai a salvare ogni singolo carattere in una cella. Quindi se hai la stringa "ciao" dovresti avere: vet[0]='c'; vet[1]='i' ... Comunque se la stringa non ha una lunghezza fissa dai un'occhiata al mio post.

un piccolo esempio… se volessimo salvare http://www.arduino.cc pe esempio il codice sarebbe?

raustina: un piccolo esempio... se volessimo salvare http://www.arduino.cc pe esempio il codice sarebbe?

Dipende da come lo mandi sul seriale, cioè se lo scrivi tu a mano nel campo oppure se lo fai mandare da un altro ide.

Senza usare i vettori‚Ķ forse √® pi√Ļ semplice (Grazie seppe del codice :wink: )

Serial.begin(9600); //inizializzazione della comunicazione seriale
String testo = ""; //creazione di una stringa vuota

while ( Serial.available() ) 
{
      testo = testo + (char)Serial.read(); //concatenazione del nuovo carattere con i precedenti
}

con i vettori…

Serial.begin(9600); //inizializzazione della comunicazione seriale
char testo[21]; //creazione di una stringa vuota
int i;
while ( Serial.available() ) 
{
      
      testo[i] = testo[i] + (char)Serial.read(); //concatenazione del nuovo carattere con i precedenti
      i=i+1;
      if (i==21){
      for( int j=0; j<21; j++){
      Serial.print(testo[j]);
      }
   }
}

è da provare l’ho fatto al volo…

se è lunga 16 caratteri dichiari un vettore da 16 caratteri: char vet16

Attenzione! Per i vettori stringhe bisogna allocare anche lo spazio per il carattere di fine stringa('\0')! Se non c'è lo spazio per questo carattere il compilatore potrebbe darti errore e in esecuzione avrai sicuramente casini perché le funzioni che leggeranno la stringa non sapranno dove finisce, quindi se una stringa è lunga 16 caratteri(ASCII naturalmente), questa andrà allocata in un vettore lungo 16, NON 15.

funziona wow grazie a tutti, io avevo pensato di scriverlo sulla eeprom ma poi ci ho ripensato...

occhio se stai usando il mio poi va in loop... devi fermarlo con qualche piccolo accorgimento....

non sto usando il tuo per via dell' estrema semplicità dell'altro. ma se poi spengo l'arduino la stringa inviata prima rimane memorizzata?

raustina: non sto usando il tuo per via dell' estrema semplicità dell'altro. ma se poi spengo l'arduino la stringa inviata prima rimane memorizzata?

No... devi metterla sull'EEPROM se vuoi ritrovarla... Ciao

qundi la eeprom quente volte puo essere letta? ^_^

raustina: qundi la eeprom quente volte puo essere letta? ^_^

La EEPROM ha un limite nel numero di cancellazioni, >100000, non c'è nessun limite alle letture.