Arduino: Variabili

Qualsiasi dato presente in uno skecth deve essere associato a un tipo di dato. La variabile, proprio per la sua caratteristica, contiene un valore numerico che può cambiare durante lo svolgimento del programma stesso.

Il valore assegnato alle costanti, che vedremo più avanti, vengono definite anch’esse all’inizio del programma, ma il suo valore non può essere modificato o sostituito.

La variabile deve essere dichiarata e, opzionalmente, le può essere assegnato un valore che resta in memoria per tutto il tempo dell’esecuzione del programma.

Il codice seguente dichiara una variabile denominata inputVariable e poi le viene passato il valore ottenuto sul pin di ingresso analogico 2:

int inputVariable = 0; // dichiara una variabile e assegna il valore 0 inputVariable = analogRead (2); // il valore acquisito sul pin analogico 2 viene assegnato alla variabile inputVariable

La prima riga dichiara che conterrà un valore int, (abbreviazione di numero intero). La seconda riga assegna (=) alla variabile inputVariable il valore analogico prelevato sul pin 2 del microncontrollore Arduino. Questo rende il valore del pin accessibile in altre parti del programma.

Una volta che una variabile è stata assegnata, o ri-assegnata, è possibile verificare il suo valore per vedere se soddisfa determinate condizioni, oppure è possibile utilizzare direttamente il suo valore.

Di seguito sono illustrate tre operazioni utili con le variabili. L’esempio seguente verifica il contenuto della variabile inputVariable.

Se è inferiore a 100, inputVariable assume il valore 100, e quindi viene impostato un ritardo in base a inputVariable che ora è di 100:

if (inputVariable <100) // se la variabile è meno di 100
{
   inputVariable = 100; // assegno alla variabile il valore 100
}
ritardo (inputVariable); // utilizza il valore contenuto nella variabile per impostare il ritardo

Nota: Le variabili dovrebbe avere un nome descrittivo, per rendere il programma più leggibile. I nomi delle variabili come tiltSensor o pulsante aiutano il programmatore alla lettura del codice e a capire che cosa rappresenta la variabile. I nomi delle variabili come var o di valore, d’altro canto, fanno ben poco per rendere il codice leggibile e vengono utilizzati solo qui come esempi. Una variabile può essere chiamata con qualsiasi altra parola che non sia contenuta nel set dei comandi di Arduino.

Dichiarazione delle variabili

Tutte le variabili devono essere dichiarate prima di poter essere utilizzati. La dichiarazione di una variabile significa definire il suo tipo di valore, come int, long, float, ecc, la definizione di un nome specifico, e facoltativamente l’assegnazione di un valore iniziale. Questo deve solo essere fatto una volta in un programma ma il valore può essere modificato in qualsiasi momento usando gli operatori aritmetici e la riassegnazione del valore.

L’esempio seguente dichiara che inputVariable è un int, cioè di tipo intero, e che il suo valore iniziale è uguale a zero. Questa operazione è chiamata “dichiarazione semplice”.

int inputVariable = 0;

Una variabile può essere dichiarata in qualunque punto del programma e svolge il suo compito nella parte del programma in cui viene utilizzata.

Portata della variabile

Una variabile può essere dichiarata all’inizio del programma prima di void setup (), oppure localmente cioè all’interno di funzioni, e talvolta la variabile può essere dichiarata all’interno di un blocco di istruzioni come in un ciclo for.

Nel punto di programma in cui la variabile viene dichiarata, determina la portata della variabile stessa, o la capacità in alcune parti di un programma di utilizzare la variabile stessa.

Una variabile è globale se è dichiarata all’inizio del programma, prima della funzione setup () e può essere utilizzata da ogni funzione e istruzione in tutto il programma. Una variabile è locale quando è definita all’interno di una funzione o come parte di un ciclo for. La variabile locale è visibile e quindi può essere utilizzata solo all’interno della funzione in cui è stata dichiarata. E’ quindi possibile avere due o più variabili con lo stesso nome in diverse parti dello stesso programma che contengono valori diversi. Garantendo che solo una funzione ha accesso alle sue variabili semplifica il programma e riduce il rischio di errori di programmazione.

Il seguente esempio mostra come dichiarare alcuni tipi diversi di variabili e dimostra la visibilità di ogni variabile:

int value; // ‘value’ è visibile in tutto il programma e in ogni funzione

void setup()
{
}

void loop()
{
  // non è necessaria alcuna dichiarazione di variabile
  for (int i=0; i<20;) // ‘i’ è visibile solo all’interno del ciclo for
  {

      i++;
  }
  float f; // ‘f’ è visibile dentro la funzione loop
}