La programmazione di Arduino si basa dal punto di vista formale sul linguaggio C dal quale eredita numerosi paradigmi. Gli Sketch, così si chiamano i programmi scritti per Arduino, vengono compilati convertiti (in base al tipo di scheda UNO, mini, micro, ecc.) e quindi trasferiti sulla scheda tramite USB (normalmente) .
Il programma si basa su due funzioni principali :
void setup() : viene utilizzata per richiamare librerie esterne, inizializzare le variabili e lo stato dei pin di ingresso e uscita, impostare i parametri per la comunicazione seriale; è la prima funzione eseguita quando si accende o si resetta la scheda, viene esguita una sola volta.
void loop(): è la funzione che viene eseguita all'infinito, la scheda esegue le istruzioni contenute in questa funzione dalla prima all'ultima (vale a dire dall'alto verso il basso del programma) per poi ricominciare da capo. L'aspetto di uno sketch è dunque il seguente :
void setup()
{
// contiene le istruzioni da eseguire una sola volta all
}
void loop()
{
// istruzioni da eseguire ciclicamente
}
Tipi di dati
boolean : 0, 1, false, true
è importante sapere che mentre il valore false è rappresentato dallo zero, il valore true è rappresentato da qualsiasi valore diverso da zero!
char : 8 bits, caratteri ASCII
il tipo char occupa un byte di memoria e viene utilizzato per memorizzare un carattere alla volta; va da -128 a 127 ed i caratteri vengono memorizzati in forma numerica tramite il loro codice ASCII
byte : 8 bits, 0 to 255, senza segno
occupa un byte di memoria...niente altro da aggiungere
int : 16 bits, da -32,768 a 32,767, con segno
occupa due byte di memoria, la versione unsigned int può memorizzare valori compresi tra 0 e 65535
long : 32 bits, da -2,147,483,648 a to 2,147,483,647, con segno
occupa quattro byte di memoria, la versione unsigned long memorizza valori compresi tra 0 e 4.294.967.295.
float : 32 bits, –3.4028235E^+38 fino a 3.4028235E^+38, con segno
occupa quattro byte di memoria e memorizza numeri reali in virgola mobile.
doble : l'implementazione di questo tipo di dato in Arduino è la stessa del tipo float, non comporta alcun vantaggio.
array : memorizzano insiemi di valori dello stesso tipo :
int valori[2] ; dichiara un array di interi contenente due elementi. L'indice di un array inizia dal valore 0; gli elementi privi di inizializzazione contengono valori casuali; il tentativo di scrivere valori su posizioni eccedenti il numero di elementi dichiarati può portare malfunzionamenti.
Un tipo particolare di array è l'array di char col quale si possono gestire le stringhe.
char stringa1[5] = { 'c', 'i', 'a', 'o', '/0' } ;
char stringa2[] = "ciao";
char stringa3[5] = ciao";
char stringa[4] = { 99, 105, 97, 111, 0 }
Le dichiarazioni soprastanti sono tutte equivalenti. Le stringhe devono concludersi con un bye a zero, per le stringhe create utilizzando le virgolette doppie questo viene messo automaticamente, negli altri casi va inserito; la lunghezza dell'array deve essere calcolata aggiungendo un elemento alla lunghezza della stringa da memorizzare.
Per elaborare le stringhe può essere utilizzata la classe String di Arduino, questa classe permette una elaborazione molto più complessa di quanto fa l'array di char; infatti si possono concatenare stringhe, sostituirne parti, ricercare sottostringhe, ecc. In pratica quando si tratta di manipolare testo viene utilizzato questo secondo metodo; si tratta di un metodo più costoso in termini di risorse di sistema ma molto più pratico.
void : viene utilizzato solo nelle dichiarazioni di funzioni; indica che la funzione non restituisce alcun valore.



