Lezione #2
Comunicazione seriale e blink

In questa seconda lezione del corso gratuito di Arduino per principianti vediamo assieme i dettagli della scheda Arduino Mega 2560 e verifichiamo che il sistema hardware e software siano operativi. Nella lezione facciamo due esperimenti pratici: facciamo lampeggiare il led del pin 13, LED_BUILTIN, quello integrato nella scheda di Arduino, e sperimentiamo la comunicazione seriale che ci permette di dare istruzioni ad Arduino e di ricevere le sue risposte.

Ciao a tutti, questa è la seconda lezione del corso di Arduino. Vediamo oggi i dettagli della scheda Arduino Mega 2560. Tutti i componenti che vi mostrerò in questo video sono contenuti nel kit Starter che ho comprato su Amazon, se lo volete acquistare cliccate qui.

Troviamo anzitutto il connettore usb per connetterlo al pc. In questo caso non serve altra alimentazione. Se non abbiamo l’esigenza di connettere la scheda al pc possiamo alimentarla con l’apposito alimentatore o tramite batteria. La scheda Arduino è dotata di 54 pin digitali, 14 dei quali possono essere usati come segnali PWM. Vedremo in una futura lezione il concetto e l’uso del PWM. Con il nostro programma possiamo configurare questi pin come input oppure come output a seconda delle nostre necessità, potremo poi leggere o scrivere il loro valore. Tramite questi pin possiamo ad esempio accendere e spegnere un led, nel caso lo abbiamo configurato come uscita (OUTPUT), oppure leggere lo stato di un pulsante nel caso della configurazione come ingresso (INPUT).

Ai 16 pin analogici possiamo collegare dei sensori che forniscono tensione in ingresso variabile a seconda del valore misurato. Questi valori saranno poi convertiti da Arduino in un valore che va da 0 a 1024 per poterli poi processare nei nostri sketch.

Basta con la teoria, passiamo alla pratica. Apriamo il software del programma Arduino, che abbiamo scaricato nella lezione precedente. Compare la schermata in cui andremo a scrivere il nostro codice. Niente paura, partiremo da un esempio. Colleghiamo la scheda Arduino Mega. I pulsanti nel menù in alto servono, come appare indicato, per verificare il codice, caricarlo sulla scheda, avviare un nuovo progetto, aprirne uno che abbiamo salvato e per salvare quello su cui stiamo lavorando.

Fate però attenzione alla funzione di verifica del codice!!

Il controllo viene fatto solo sulla correttezza formale: segnala per esempio se manca un punto e virgola, una graffa che chiude una funzione e così via. E’ un po’ come un insegnante che controlla solo la grammatica. Se volete che il programma restituisca “ciao” e invece restituisce “boia” per un errore concettuale e non di sintassi, il controllo non segnalerà nessun errore!

Idem se sbagliate i collegamenti dei circuiti come ho recentemente fatto io e mandate in cortocircuito il sistema. Ho fatto fuori a botta tre led, per fortuna che costano pochissimo!!

Facciamo lampeggiare un led: lo sketch blink

Corso gratuito di Arduino a lezioni con tutorial pratici
Corso gratuito di Arduino a lezioni con tutorial pratici

Andiamo in strumenti. In scheda assicuriamoci che sia selezionato “Arduino Mega or Mega 2560″. Processore dev’essere ATmega 2560. Dovremmo essere operativi. Per accertarcene andiamo in file, esempi, basics, Blink. Come vediamo il codice è già compilato, proviamo a togliere un “;”. Verifichiamo il codice. Il programma ci segnala l’errore. Rimettiamo il punto e virgola. Verifichiamo di nuovo: tutto ok. A questo punto possiamo cliccare upload per caricare il codice sulla scheda di Arduino. I led “TX” ed “RX” lampeggiano ad indicare che il codice è in fase di caricamento. In fondo troviamo caricamento completato.

Vediamo infatti che il led del pin 13 ha iniziato a lampeggiare. Diamo un’occhiata al codice. La macchina legge il codice dall’alto verso il basso, come un essere umano legge un libro. La macchina è moooooooooooooolto più veloce. Setup e Loop sono due funzioni. In setup diciamo ad Arduino che il pin 13 va utilizzato come OUTPUT: dai al led l’energia perchè possa accendersi. Troviamo scritto “LED_BUILTIN”, è il nome del led 13. Proviamo a sostituirlo con 13. Vediamo che il led continua a lampeggiare. La funzione loop è quella che Arduino continua a leggere ininterrottamente: come arriva all’ultima riga torna immediatamente su e rilegge il tutto dalla prima. Con la prima istruzione andiamo ad accendere il led 13. Facciamo attendere per 1 secondo. Spegnamo il led, attendiamo 1 secondo. Il programma torna su a leggere la prima riga ed il led viene riacceso. Se aumentiamo il valore da 1000 a 5000 il led lampeggia più lentamente. Riduciamo a 100 e lampeggia molto velocemente

La comunicazione seriale

Andiamo adesso a dare un po’ di interattività al meccanismo. Parliamo di comunicazione seriale, che ci consente di impartire istruzioni ad arduino e di ricevere le sue risposte. Lavoriamo sempre sul codice che fa lampeggiare il led. In setup andiamo ad inserire questo codice serial.begin(9600);

Attenzione all’uso della “S” maiuscola, altrimenti la funzione non viene riconosciuta. Non è facile sbagliare, perchè come vedete il testo viene formattato e se proprio ci scappa verificando il codice l’errore viene subito rilevato. La sua funzione è quella di aprire la porta seriale, quindi di instaurare la comunicazione tra computer e scheda di Arduino. 9600 bps è la velocità di trasmissione dei dati normalmente utilizzata. Bps sta per baud per secondo, i baud sono i simboli che vengono trasmessi. 

Andiamo a dichiarare una nuova variabile di tipo intero, che chiamo cmd. In loop scriviamo if(Serial.available()). Significa, se ci sono dati che il computer deve comunicare ad Arduino fai qualcosa. Quel qualcosa è il comando Serial.read();

Cmd è uguale a quello che il computer ha comunicato ad Arduino. Se il computer ha comunicato “a”, di accendi, andiamo ad accendere il led.  Se il computer ha comunicato “s” di spegni spegniamo il led.  Diamo un piccolo delay alla fine. Apriamo adesso il monitor seriale, uno strumento presente nell’ide di Arduino che permette di leggere i dati che Arduino comunica tramite la porta seriale al computer.  Con la casella di testo in alto possiamo andare a dare istruzioni ad Arduino.  Adesso il led è spento.  Scriviamo “a”, e il led si accende. Scriviamo “s” e lo andiamo a spegnere.

Ma anche la scheda di Arduino può comunicare con il computer.  Facciamo in modo che Arduino ci risponda ogni volta che esegue un’azione. Facciamogli dire, per esempio, luce accesa e luce spenta. La funzione da utilizzare è Serial.print. Come vediamo le risposte vengono scritte una di seguito all’altra. Se vogliamo che ogni risposta venga scritta su una nuova riga utilizziamo invece la funzione Serial.println(“testo”);

Ecco il codice finale.

 

/*
 * Author: SMRAZA KEEN
 * Date:2016/6/29
 * IDE V1.6.9
 * Email:TechnicSmraza@outlook.com
 * Function:
 */
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:

int led = 13;
int cmd;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);    
  Serial.begin(9600); 
}
 
// the loop routine runs over and over again forever:
void loop() {
  if(Serial.available()){    
    cmd = Serial.read();
    
    if(cmd == 'a'){
      digitalWrite(led, HIGH);      // turn the LED on (HIGH is the voltage level)
      Serial.println("Luce accesa");
    }
    if(cmd == 's'){
      digitalWrite(led, LOW);      // turn the LED on (HIGH is the voltage level)
      Serial.println("Luce spenta");
    }
  }
  delay(100);
}

 

Bene amici, siamo giunti alla fine anche di questa lezione! Vi aspetto per la prossima!!

Se non lo hai ancora fatto, iscriviti al canale YouTube!