"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 :) .. 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] ;)

Guglielmo

ok, Grazie, avrei sbagliato di sicuro :D