"int"+int ?

Ciao a tutti,, come sempre torno con la mia rubrica "101 domande stupide da porre sul forum di Arduino" :slight_smile: ... Sto cercando di realizzare uno sketch che legga degli input e li memorizzi in ordine su delle "int" , ho abbozzato uno sketch :

int temp = 0;   //memoria temporanea
int count = 1;  //conteggio x

int x1 = 0;     //valore1
int x2 = 0;     //valore2
int x3 = 0;     //valore3

void loop(){
  while (count<4)   //ciclo while per ripetere l'operazione meno di 4volte
  {
    temp=Serial.read; //lettura di un valore attraverso seriale (e' un esempio)
   x(count)=temp;     //count fra parentesi rappresenta il numero di cicli del while, in modo da memorizzare ogni nuovo valore dentro una int diversa
   count=count+1;     //aumento il conteggio delle ripetizioni
  }
}

il codice ovviamente non è completo manca il void setup ecc..

comunque dovrebbe funzionare così:
1 verifica che la int count sia inferiore a 4
2inizia il ciclo di while e come prima cosa memorizza la "lettura" sulla int "temp"
3Qui è il punto del post .. vorrei che ad ogni ciclo di while, "temp" venga trasferito su una int diversa(in ordine ovviamente) ovvero su una int che corrisponde al valore di "count", esempio: primo ciclo, count=1 ; x1=temp---> ciclo 2 ; count=2 ; x2=temp.. ecc..

4 si aumenta di 1 il valore di int per il prossimo ciclo.

Al termine del 3° ciclo lo sketck si blocca.

La mia domanda quindi è : "come faccio ad aggiungere ad X un valore che dervia da un'altra int?"

Non saprei neanche come cercare ... Grazie :slight_smile:

Devi usare quello che si chiama vettore, o array, quello che si indica con le parentesi QUADRE. Infatti nel tuo codice ci sono un paio di errori:

temp=Serial.read (); // Una chiamata di funzione/metodo richiede SEMPRE le parentesi TONDE
x[count]=temp;        // Accedere ad un elemento di un array richiede le parentesi QUADRE
count++;            // Più comodo, ma anche il tuo va bene

x va dichiarato come:

int x[4];

Comunque nota che puoi fare direttamente:

x[count] = Serial.read ();

E, solitamente, quando si sa che si vuole ripetere qualcosa un numero noto di volte, si usa un ciclo for, non il while:

for (int count = 0; count < 4; count++)
  x[count] = Serial.read ();

Poi userei un for come cicli e controllerei se sulla seriale sono dati diponibili. Serial.available()

Grüße Uwe

Grazie, tutto chiarissimo, e molto più di quello che avevo chiesto :slight_smile: .. solo una cosa non ho capito :

int x[4]; significa che devo modificare int x1;int x2;int x3; int x4; in >> int x[1];int x[2];int x[3]; int x[4];?

Grazie anche a Uwefed, per l'applicazione che vorrei realizzare è anche piu funzionale..

Ricorda che gli indici in 'C' partono da 0 ...
... quindi, se dichiari un array di 4 elementi (int x[4]) l'indice va da 0 a 3 ovvero x[0] .. x[3] :wink:

Guglielmo

ok, Grazie, avrei sbagliato di sicuro :smiley: