PROBLEMA SU MONITOR SERIALE

Ciao a tutti
Quando tento di scrivere qualcosa su monitor seriale vedo stampato solo una sequenza di x e ?, prima funzionava tutto e ora ho questo problema.
L'unica cosa, sono passato da un arduino leonardo (che ho rotto) ad un mega ma non credo sia questo il problema.

vi allego il mio listato.

char val="ccc";
void setup() {
 // put your setup code here, to run once:
 Serial.begin(9600);
}

void loop() {
 // put your main code here, to run repeatedly:
  Serial.println(val);
  delay(5000);
}

premetto che non so come ragiona la leonardo ...secondo me il problema sta in:

char val="ccc";

che, essendo un array di char, dovrebbe essere scritto:

char val[]="ccc";

poi, per avere l'array nel monitor, dovresti fare ( se non sbaglio):

for (byte i = 0; i < sizeof(val) - 1; i++) {
  Serial.print(val[i]);
}

ORSO2001:
poi, per avere l'array nel monitor, dovresti fare ( se non sbaglio):

... tutto corretto fino qui, poi, SI, sbagli, un char array è una stringa classica del 'C' ed è direttamente gestita dalla Serial.print(), quindi ...

char val[] = "ccc";
...
Serial.println(val);

Guglielmo

ok, inteso anche come array di char e stampato a video con quel ciclo for mi da lo stesso problema, sempre un' altra sequenza di x e ? come se non riuscisse a riconoscere i caratteri.

... ma hai letto il mio post qui sopra ? :o :o :o ... Il ciclo FOR NON serve !

Per il resto, se su monitor seriale vedi caratteri strani, è perché NON hai messo la stessa velocità che usi nel codice ...
... monitor seriale, in basso a destra, scegli 9600 baud (visto che nel codice apri la seriale a quella velocità).

Guglielmo

ATTENZIONE: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo primo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

si si ho letto scusa, il problema era proprio il tempo, dovevo impostarlo anche sul monitor seriale
grazie :slight_smile:

solo che risolto questo problema e lavorando con molti array di char (prima "eliminati" commentandoli), quando vado a stamparne uno a video, il monitor resta bianco

Primo: Correggi, come ti ho chiesto al mio post #4, il tuo primo post

Dopo di che:
In che senso ? Non viene effettuata la Serial.print() ? ? ?

Se non è troppo lungo, metti il codice (... mi raccomando, in conformità al regolamento, punto 7, racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone </> ... primo a sinistra).

Guglielmo

corretto scusa

il codice è questo

char x;
char URF[5];
char URB[5];

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

}

void loop() {URF[0]='1';
             URF[1]='U';
             URF[2]='4';
             URF[3]='R';
             URF[4]='2';
             URF[5]='F';

             URB[0]='1';
             URB[1]='U';
             URB[2]='4';
             URB[3]='R';
             URB[4]='6';
             URB[5]='B';
           
             
             
             Serial.println(URB);
             x=URF[0];   URB[4]=x;
             x=URF[2];   URB[2]=x;
             x=URF[4];   URB[0]=x;

             
             Serial.println(URB);
                        
             
             delay(5000);
             /*Serial.println(URB);
             delay(5000);*/
             




}

provo a stampare quell' array di char inizialmente e poi dopo una modifica ma il monitor seriale rimane bianco

  1. scrivi il codice in modo più ordinato! Via tutte quelle righe bianche. Usa la funzione dell 'IDE Tools -> Auto Format per sistemare bene le indentature.

  2. le stringhe del 'C' DEVONO SEMPRE essere terminate da 0x00 (zero in esadecimale) quindi ... devi prevederle UN carattere più lunghe di quanto ti serve e, alla fine dei veri caratteri, mettere SEMPRE 0x00 che indica dove la stringa finisce.

Guglielmo

non cè' anche un errore nel definire un array di 5 elementi e poi usarne 6? :o

char URF[5];
char URB[5];

e
 
URF[5]='F';
URB[5]='B';

-zef-:
non cè' anche un errore nel definire un array di 5 elementi e poi usarne 6? :o

SI, anche :slight_smile:

>GOVO24: l'indice degli array parte da 0, quindi, se definisci un array di 5 elementi (es. char pippo[5]) puoi usare gli elementi da 0 a 4.

Nota che il compilatore NON ti da errore, ma poi il programma fa disastri difficili da trovare quindi ... prestare SEMPRE la massima attenzione alle dimensioni degli array ed agli indici.

Guglielmo

ah ok ok, io contavo anche lo 0 e per questo dichiaravo a 5 un array di 6 elementi.

grazie :slight_smile: :slight_smile: :slight_smile: :slight_smile: