ARDUINO: un piccolo tutorial su come comandare arduino tramite seriale da un computer

Normalmente chi utilizza Arduino usa la comunicazione seriale per inviare messaggi sul “monitor seriale”. Sempre utile per compiti di debug, ma la comunicazione seriale è utile per molti motivi poiché Arduino non solo può inviare messaggi seriali, ma può anche leggerli. In questo breve tutorial proveremo a comandare Arduino tramite un software python che gira su un computer, così ad esempio si potrebbe collegare via usb un Arduino ad una Raspberry collegata in rete, ovviamente la Raspberry può essere essa stessa la base per utili strumenti gestendo sensori ed attuatori tramite il suo GPIO, ma talvolta Arduino è più pratico. Comunque vediamo come si fa, sopra il video che mostra i programmi in funzione. Purtroppo nell'editor si è persa la formattazione, attenzione perciò se copiate il codice phyton, per lo sketch non c'è problema.

Lo sketch

Su Arduino girerà questo semplice sketch

 




Numero riga per commento

Codice

Commento

1

 

 

2

3

 

 

 

 

4

 

5

6

 

7

 

 

8

 

9

 

 

#define LED 13

void setup()

{

pinMode(LED, OUTPUT);

Serial.begin(9600);

}

 

void loop()

{

if (Serial.available())

{

int c = Serial.read();

if (c == 'H')

{

digitalWrite(LED, HIGH);

}

else if (c == 'L')

{

digitalWrite(LED, LOW);

}

}

}

1 definiamo una costante che indica il led a bordo di Arduino

2 settiamo il led come OUTPUT

3 fissiamo la velocità del collegamento seriale

4 controlliamo che il collegamento seriale sia disponibile

5 creiamo una variabile numerica (int integer) di nome c nella quale mettiamo il valore letto dalla seriale

6 controlliamo se il carattere letto sulla seriale è H

7 se il carattere letto è H accendiamo il led

8 altrimenti se il carattere letto è L

9 spegniamo il led

Andiamo al programma Python che gira sul computer

 




Numero riga per commento

Codice

Commento

1

2

 

3

4

5

 

6

 

 

7

8

 

 

 

9

import serial

import time

 

arduino = serial.Serial('/dev/ttyUSB0',9600)

time.sleep(1)

  while(True):

    valore = input("Inserisci carattere: ")

      if valore=="H":

         arduino.write(b'H')

         print("LED acceso")

if valore=="L":

arduino.write(b'L')

print("LED spento")

      if valore!="H" and valore!="L":

      print("Carattere non valido")

arduino.close()

1-2 importiamo delle librerie per il collegamento seriale e per gestire il tempo

3 settiamo la seriale, assegnandola ad una variabile di nome arduino. Da osservare che questo codice va bene sulla mia macchina linux o su una Raspberry su Windows ttyUSB0 potrebbe essere una COM (COM1,COM2…) occorre controllare quale sia la porta corretta a cui è collegato Arduino

4 Attendiamo un secondo

5 Il programma continua a chiedere di inserire un carattere, il ciclo è sempre vero.

6 Se il carattere è H invia il carattere sulla seriale come stringa e stampa a schermo la dicitura “LED acceso”,

8 se il carattere è L lo invia sulla seriale e stampa “LED spento”,

8 se il carattere non è né H né L stampa “Carattere non valido” 9 chiudiamo il collegamento

Finito. Ovviamente è possibile far fare qualsiasi cosa ad Arduino oltre ad accendere il led a bordo.

tag: 
Video: