domenica 22 gennaio 2012

Dati su seriale tra Arduino e PC con Python

Questo esempio e' in preparazione di uno scambio di dati tra telefono Android ed Arduino.
Partendo dal caso piu' semplice (ovvero PC + Arduino) si puo' caricare sulla Arduino il seguente sketch
che in sostanza accende il led sul pin 13 quanto trasmette la stringa "hello"
--------------------------------------------------------------------

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


void loop() {
  digitalWrite(13, HIGH);   
  delay(1000);              
  int bytesSent = Serial.write("hello\n");
  digitalWrite(13, LOW);    
  delay(1000);              


}

--------------------------------------------------------------------

il programma di lettura su PC (in Python) e' semplicemente, usando la libreria Pyserial
--------------------------------------------------------------------
import serial
arduino = serial.Serial('/dev/ttyUSB2', 9600)
i = 1
while (1):
print str(i) + ": " + arduino.readline()
i= i + 1
--------------------------------------------------------------------
il prossimo tentativo e' quello di far arrivare i dati direttamente ad Android mediante la modifica USB Host del Kernel ed un cavo USB OTG (On The Go)

Attenzione: il comando readline di Python richiede la lettura di una stringa terminata con un ritorno di new line, se la scheda trasmette sulla seriale ma non manda mai il newline il PC non intercetta mai la trasmissione