buongiorno,
ho due Arduino mkr che comunicano via seriale, uno dei due riceve i dati via LoRa da alcuni sensori e li invia al secondo via seriale per essere elaborati.
nell'arduino che riceve riempio un array di char ma il problema più grande sembra svuotarlo!
avrei bisogno di separare i dati contenuti nell'array in alcune variabili, ma appena uso un ciclo for per mettere mano all'array tutto si blocca!, devo mettere persino l'arduino in boot per poterlo riprogrammare.
... NON controlli mai il valore dell'indice i. Se, per qualche strano motivo, ricevi più 60 caratteri l'indice dell'array va oltre il limite e sporchi la memoria con risultati imprevedibili. Prova a stampare anche il valore di i e vedi a quanto arriva ...
Altra cosa ... se eviti di usare la classe String è ancora meglio ...
NON puoi essere "sicurissimo" ... in quel tipo di cicli, con array, il controllo sull'indice è obbligatorio per evitare spiacevoli sorprese!
... semplicemente STUDIANDO ... abbiamo detto 1000 volte di usare le funzioni che mette a disposizione la AVR libc (sempre automaticamente inclusa e resa disponibile) ed, in particolare, quelle che si trovano in <string.h> dove c'è tutto quello che serve.
... anche perché j =< 10 è una forma errata ...
... in che senso? Se stampi "prova" cosa ti stampa?
char pippo[60] = "ABCDERFGHIJKLMNO";
String pluto;
int i;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
for (i=0; i<10; i++) {
pluto += pippo[i];
}
Serial.println (pluto);
}
void loop() {
// put your main code here, to run repeatedly:
}
... fa esattamente quello che dovrebbe fare (stampa ABCDEFGHI) ... quindi ... copia ed incolla ESATTAMENTE il codice che stai usando perché c'è qualche cosa che non quadra ...
... solo per questa prova, mai usata altrimenti (anche perché i compilatori XC di Microchip, che in prevalenza uso, sono 'C' e NON 'C++' e quindi non ce l'ho proprio )