Arduino e comunicazione seriale

Ciao ragazzi!

Oggi voglio tornare a parlarvi di Arduino!
In particolare vi spiegherò come far comunicare arduino con altri programmi e script attraverso la porta seriale.

L’IDE di arduino ha un serial monitor integrato e in questo articolo impareremo a sfruttarlo per i nostri progetti, vedremo inoltre come arduino può inviare e ricevere dati attraverso la porta seriale.

Come sempre partiamo subito con esempi pratici senza perderci dietro a troppe nozioni teoriche.

La prima cosa da fare è aprire la porta seriale a 9600 baud attraverso la funzione Serial.begin(9600) che dovrà essere inserita all’interno del setup().

Bene adesso che abbiamo detto ad arduino di aprire la comunicazione possiamo fargli “stampare” sulla seriale un determinato valore attraverso la funzione Serial.print().

Vediamo un esempio di come inviare il valore di un sensore analogico collegato ad arduino al pin analogino 1:

int FotoPin = 1;
int FotoValue;
void setup() {
Serial.begin(9600);
pinMode(ledPin1, OUTPUT);
}
void loop() {
FotoValue = analogRead(FotoPin);
Serial.println(FotoPin);
delay(500);
}

(Lo sketch e il circuito sono gli stessi visti nell’articolo Arduino e fotoresistenza.)

Una volta caricato lo sketch su arduino, cliccando sul pulsante “Monitor seriale” (posizionato in alto a destra dell’IDE) potrete vedere il valore del sensore analogico stampato a video ed aggiornato ogni mezzo secondo (delay(500)).

Come avete notato nel codice sopra non ho utilizzato Serial.print() ma Serial.println(), l’unica differenza tra le due funzioni è che la seconda spampa il valore su una nuova riga.

Utilizzare il monitor seriale  dell’IDE vi sarà molto utile in fase di debugging.

Come c’è una funzione per scrivere sulla seriale ovviamente c’è anche la funzione per leggere i dati scritti via seriale, ovvero: Serial.read().
Vediamo ad esempio come accendere e spegnere un led attraverso un comando dato dal monitor seriale:

int led = 13;
char val = '0';

void setup() {
  pinMode(led,OUTPUT);
  Serial.begin(9600);
}

void loop () {
  val = Serial.read();

  if(val=='a'){
    digitalWrite(led,HIGH);
    Serial.println("led ON");
  }
  else if(val=='b'){
    digitalWrite(led,LOW);
    Serial.println("led OFF");
  }
 }

Aprendo il monitor seriale potrete accendere e spegnere il led collegato al pin digitale 13 di arduino semplicemente inviando i caratteri ‘a‘ e ‘b‘.

Ovviamente arduino non leggerà solo i dati passati dal “monitor seriale” integrato, ma da questo momento qualunque programma o script, scritto nel linguaggio che piu vi piace, potrà comunicare ad arduino e fargli accendere e spegnere il led.

Per mancanza mia di tempo vi ho illustrato solo le funzioni BASE (e nemmeno per esteso) della comunicazione via seriale di arduino, vi consiglio comunque come sempre di approfondire l’argomento sulla documentazione ufficiale! =)

Nei prossimi articoli vedremo come il Python e il PHP possono inviare e ricevere dati via seriale.

 

Questo articolo è stato pubblicato in Arduino e ha le etichette , , , , , , , . Bookmark the link permanente. Scrivi un commento o lascia un trackback: Trackback URL.

Scrivi un Commento

Il tuo indirizzo Email non verra' mai pubblicato e/o condiviso. I campi obbligatori sono contrassegnati con *

*
*

Puoi usare questi HTML tag e attributi: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*