Arduino utilizza come linguaggio di programmazione un dialetto del C (dal quale ne prende la sintassi ma ne semplifica alcune procedure) o dello Scratch.
Arduino come ambiente di programmazione predefinito fornisce l’integrated development environments (IDE) Arduino. Il formato degli sketch arduino è il .INO.
Le funzioni fondamentali
void setup() // serve per inizializzare le variabili
void loop() // esegue ciclicamente il codice scritto al suo interno
pinMode(pin, INPUT) // setta il pin in input
pinMode(pin, OUTPUT) // setta il pin in output
digitalWrite(pin, HIGH) // il pin selezionato manda un segnale (solo OUTPUT)
digitalWrite(pin, LOW) // il pin selezionato non manda un segnale (solo OUTPUT)
delay(millisecondi) // mette in pausa per il tempo selezionato
delayMicroseconds(microsecondi) // mette in pausa per il tempo selezionato
Serial.begin(9600) // imposta la velocità di comunicazione della porta seriale
Serial.print() // scrive il contenuto delle parentesi senza cambiare riga. Se non si vuole scrivere un numero, ma una stringa (parola),usare le “”
Serial.println() // scrive il contenuto della parentesi andando a capo della riga precedente. Se non si vuole scrivere un numero, ma una stringa (parola), usare le “”
int // crea una variabile intera
float // crea una variabile con virgola mobile
const // crea una costante (non modificabile). Può essere usata con float o int
analogRead (pin) // lettura su un pin analogico
analogWrite(pin, valore) // scrittura su un pin analogico simulato con PWM
Il display LCD
In questo caso prenderemo in analisi un display LCD 16x2. Per comodità, inserirò anche la tabella di piedinatura.
#include <LiquidCrystal.h> // inizializza la libreria del display (da inserire SEMPRE ogni qualvolta si utilizzi il display, va inserito all’inizio del programma
LiquidCrystal lcd(RS, E, D4, D5, D6, D7) // setta i pin del display, da impostare nel setup
lcd.begin(16, 2) // definisce colonne (16) e righe (2), da mettere nel setup
lcd.clear() // pulisce il display
lcd.setCursor(colonna, riga) // permette di selezionare la casella da dove scrivere. La colonna parte da 0 e arriva a 15. La riga può essere 0 o 1
lcd.print() // permette di scrivere un dato, una variabile o una stringa (con le “”)
Per creare un carattere col display LCD, prima del void setup() bisogna:
byte carattere[8] = {
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
lcd.createChar(0, carattere);
lcd.write(0);
Sostituendo agli 0 dopo la b con gli 1 per creare il carattere.
Le funzioni logiche
Presupponendo la conoscenza della logica booleana (logica semplice di tipo binario), ecco qui riportato come vanno trasposte in Arduino. Nel farlo farò piccoli esempi di programmi.
void setup(){
int i;
for(i=2; i<10; i++);{ // funzione for
pinMode(i, OUTPUT);}}
void loop(){
int i;
int k;
for(i=2; i<10;i++){
if(i==3 & k==0){ // funzione if con funzione and tra parentesi
digitalWrite(3, HIGH);}
if(i==4 || k==5){ // funzione if, per mostrare come ne puoi mettere più in sequenza, con funzione or
digitalWrite(3, LOW);}
else if(!i==5);{ // funzione else if, necessita di una if prima. Mettere il punto esclamativo davanti ad una costante la nega
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);}
else{ // funzione else, necessita di una if o else if prima
Serial.println(‘banana’);}
}}
NOTA: QUESTO PROGRAMMA NON FUNZIONA. È SOLO DI ESEMPIO.
void loop(){
int temp = analogRead(A0); //stiamo leggendo un sensore di temperatura con questo pin
Serial.println(“valore sensore: ”);
Serial.println(temp); // così avremo un valore da 0 a 1023. È solo dimostrativo
float volt = (temp/1024.0)*5.0; // conversione da stato a volt
Serial.println(“Tensione: ”);
Serial.println(volt); // stampa la tensione, è solo dimostrativo
Serial.println(“Gradi: ” );
float temperatura = (volt)*100; // così convertiamo i volt in temperatura
Serial.println(temperatura);}
NOTA: LA CONVERSIONE DA VOLT A GRANDEZZA FISICA PUÒ VARIARE DA SENSORE A SENSORE