Variabili e tipi di dati.
// ========= VARIABILI ==========
// Leggi di più qui.
boolean flag1
; // dichiara.
boolean flag1, flag2; // dichiara multiplo.
boolean flag1 = true; // dichiara e inizializza.
// === TIPI DI DATI ===
boolean o bool // 1 byte, boolean. true/false o 1/0
int8_t // 1 byte, intero, -128... 127
char // 1 byte, carattere, -128... 127 o 'a'
uint8_t, byte // 1 byte, intero, 0...255
int16_t, int, short // 2 byte, intero, -32 768... 32 767
uint16_t, unsigned int, word // 2 byte, intero, 0... 65 535
int32_t, long // 4 byte, intero, -2 147 483 648... 2 147 483 647
uint32_t, unsigned long // 4 byte, intero, 0... 4294967295
float, double // 4 byte, frazionario, -3.4028235E+38... 3.4028235E+38
// nota: su altre piattaforme double ha una dimensione di 8 bit e ha una maggiore precisione.
'a' // carattere.
"abc" // stringa o array di caratteri.
// === ARRAY ===
int myInts[6]; // specifica il numero di celle.
int myPins[] = {2, 4, 8, 3, 6}; // specifica il contenuto delle celle.
float Sens[3] = {0,2, 0,4, -8,5}; // specifica entrambi, il numero di celle deve corrispondere.
char message[6] = "hello"; // memorizza i simboli.
// === SPECIFICATORI===
const // costante, tale variabile non può essere modificata. valore int const = 10;
static // variabile statica.
volatile // non ottimizza la variabile. Utilizzare per lavorare in interrupt.
extern // dice al compilatore che questa variabile è dichiarata in un altro file di programma.
// ====== AREA DI VISIBILITÀ ======
// === GLOBALE ===
/*
La variabile globale è dichiarata al di fuori delle funzioni ed è disponibile.
per leggere e scrivere in qualsiasi punto del programma, in qualsiasi sua funzione.
*/
byte var;
void setup()
{
// modificare il valore di una variabile globale.
var = 50;
}
void loop()
{
// modificare il valore di una variabile globale.
var = 70;
}
// === LOCALE ===
/*
La variabile locale risiede all'interno di una funzione o all'interno di qualsiasi blocco di codice.
Racchiuso tra { parentesi graffe } è in lettura/scrittura solo al suo interno.
*/
void setup()
{
byte var; // variabile locale per setup.
// cambia variabile locale.
var = 50;
}
void loop()
{
// risulterà in un errore perché var non è dichiarato in questo blocco di codice.
var = 70;
// creiamo un blocco di codice separato.
{
byte var2 = 10;
// var2 esiste solo all'interno di questo blocco.
}
// qui var2 sarà rimosso dalla memoria.
}
// === LOCALE STATICO ===
/*
La variabile locale statica non viene rimossa dalla memoria,
La variabile locale statica non viene rimossa dalla memoria,
dopo essere usciti dalla funzione.
*/
void setup()
{
myFunc(); // ritornerà 20
myFunc(); // ritornerà 30
myFunc(); // ritornerà 40
myFunc(); // ritornerà 50
}
void loop()
{
}
byte myFunc()
{
static byte var = 10;
var += 10;
return var;
}