Skip to content

Array

Supponiamo di voler salvare i valori letti da 5 sensori di temperatura. Con quello che sappiamo fino ad ora, dovremmo fare così:

int temp1 = 0;
int temp2 = 0;
int temp3 = 0;
int temp4 = 0;
int temp5 = 0;

Cinque variabili separate, cinque nomi diversi, cinque righe di dichiarazione. Se diventassero 50, Il codice diventerebbe ingestibile.


Un array è una sequenza di valori dello stesso tipo, raccolti all’interno di un’unica variabile e accessibili tramite un numero chiamato indice, che rappresenta la posizione degli elementi dentro un array.

Un palazzo ha un unico nome (es. “Palazzo Rossi”) ma al suo interno ci sono tanti appartamenti, ognuno con un numero: appartamento 0, appartamento 1, appartamento 2… Per trovare un inquilino specifico basta dire il nome del palazzo e il numero dell’appartamento.

Un array funziona seguendo la stessa logica: ha un nome e ogni elemento ha un indice numerico.


// Sintassi: tipo nome[dimensione] = {val0, val1, val2, ...};

int temperature[5] = {22, 19, 25, 21, 23};

Questo crea un array chiamato temperature che contiene 5 numeri interi.


Per accedere a un elemento specifico si usa il nome dell’array seguito dall’indice tra parentesi quadre [].

int temperature[5] = {22, 19, 25, 21, 23};

// Leggere un elemento
Serial.println(temperature[0]); // Stampa: 22 (primo elemento)
Serial.println(temperature[2]); // Stampa: 25 (terzo elemento)
Serial.println(temperature[4]); // Stampa: 23 (ultimo elemento)

// Modificare un elemento
temperature[1] = 30;
Serial.println(temperature[1]); // Ora stampa: 30

La vera utilità degli array emerge quando li si combina con i cicli for. Anziché accedere agli elementi uno per uno, si usa il contatore i come indice per scorrere automaticamente tutti gli elementi.

int temperature[5] = {22, 19, 25, 21, 23};

// Stampa tutti gli elementi dell'array
for (int i = 0; i < 5; i++) {
  Serial.print("Sensore ");
  Serial.print(i);
  Serial.print(": ");
  Serial.println(temperature[i]);
}

Questo approccio funziona con 5 elementi come con 500: basta cambiare il numero nella condizione del for.


Gli array possono contenere qualsiasi tipo di dato, non solo int:

float misure[3] = {3.14, 2.71, 1.41};
bool stati[4] = {true, false, true, true};

Gli array sono utili per gestire più pin o più componenti insieme. Invece di accendere ogni LED singolarmente, si raccolgono i pin in un array e si usa un ciclo.

// I pin dei tre LED
int ledPins[3] = {5, 6, 7};

void setup() {
  // Configura tutti i pin in un solo ciclo
  for (int i = 0; i < 3; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  // Accende i LED uno alla volta
  for (int i = 0; i < 3; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(200);
    digitalWrite(ledPins[i], LOW);
  }
}

Senza l’array, questo codice richiederebbe tre pinMode() e sei digitalWrite() scritti a mano. Con l’array, il ciclo fa tutto automaticamente. Se volessimo aggiungere un quarto LED, basterebbe modificare due righe.