pippopippoli:
ho provato come mi hai detto tu ma mi dice che la stringa non è stata dichiarata ('Str1' was not declared in this scope)
Il problema principale che vedo è che non basta l'indentazione per determinare le istruzioni da eseguire in blocco (in questo caso nella if).
Quindi intanto fai fare all'IDE un "auto-indent" del tuo codice, e potrai notare subito il problema perché diventa:
void loop() {
if (mySerial.available())
char Str1[89] = "inizializza";
Str1 = mySerial.read();
Serial.write(Str1);
if (Serial.available())
mySerial.write(Serial.read());
}
Questo significa che la if() ha UNA sola istruzione da eseguire, ed essendo questa la creazione della variabile "Str1", questa stringa all'uscita dalla "if" viene rilasciata, per cui l'istruzione "Str1 = mySerial.read();" cerca di scrivere in una variabile che non esiste più!
Quindi ti basta usare le graffe, credo volessi fare questo:
void loop() {
if (mySerial.available()) {
char Str1[89] = "inizializza";
Str1 = mySerial.read();
Serial.write(Str1);
}
if (Serial.available())
mySerial.write(Serial.read());
}
Detto questo, però, ci sono altre cose concettuali che mancano. Tu con questa variabile "Str1" che ci vuoi fare? Ti serve/servirà anche esternamente a questo codice? Perché in tal caso ti conviene dichiararla globale, fuori dal loop:
char Str1[89] = "inizializza";
void loop() {
if (mySerial.available()) {
Str1 = mySerial.read();
Serial.write(Str1);
}
if (Serial.available())
mySerial.write(Serial.read());
}
Ora però sorge un altro problema. Tu conla mySerial.read() leggi UN carattere. Non puoi assegnarlo così, devi decidere DOVE va messo all'interno della tua variabile strina di buffer. Ad esempio puoi metterla come primo carattere, ma per poter usare "Str1" come stringa devi anche mettere il terminatore di stringa \0.
Inoltre la seconda if() è inutile (anzi dannosa in quanto si "mangia" un secondo carattere) quindi va rimossa. Quindi una cosa del tipo:
char Str1[89] = "inizializza";
void loop() {
if (mySerial.available()) {
Str1[0] = mySerial.read();
Str1[1] = 0;
Serial.print(Str1);
}
}