Chi ha un minimo di dimestichezza con la programmazione di Arduino sa benissimo che è possibile avere una sorta di debug utilizzando la porta seriale per avere informazioni durante il funzionamento.
Ma questa porta ci permette anche di inviare comandi al controllore, facendo si che alcuni funzionalità possono essere implementate a livello software distogliendo l’attenzione dall’hardware (facile capire che il ponte H per la gestione dei motori è d’obbligo…).
Esistono varie possibilità di interfacciarsi tramite il PC (qui ho parlato di PHP), ma da poco ho scoperto che esiste una libreria che ci permette di scrivere una interfaccia tramite Python: PySerial.
Ipotizziamo di avere il seguente codice:
int ledPin = 13;
int inputPin = 2;
int val = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);
Serial.begin(9600);
Serial.print("Program Initiated\n");
}
void loop(){
val = digitalRead(inputPin);
if (val == HIGH) {
digitalWrite(ledPin, HIGH);
Serial.print("Ciao!\n");
} else {
digitalWrite(ledPin, LOW);
}
}
Banalmente ci aspettiamo un segnale sul pin 2, ad esempio la chiusura di un interruttore, e mostrerà un messaggio.
Passiamo adesso all’interfaccia. Dopo aver installato la libreria, possiamo scrivere la seguente routine:
import serial
location='/dev/ttyS0'
try:
print "Trying...",location
arduino = serial.Serial(location, 9600)
break
except:
print "Failed to connect on",location
try:
print arduino.readline()
except:
print "Failed to read!"
In questo modo, dopo l’esecuzione dello script, vedremo sul terminale apparire “Ciao!” ad ogni chiusura dell’interuttore.
Bello, no?
Buon divertimento