Ricevere dati dall'arduino al pc

Salve ragazzi la mia domanda di oggi è: Quale linguaggio di programmazione è addetto a ricevere dati dall'arduino al pc!?
Cioè se volessi creare un programma come Firmata, da cosa dovrei partire?! Intendo dire come faccio a ricevere dati dall'arduino e visualizzarli su una finestra di mia creazione?!
E' meglio C (c++, c#) oppure java?!

Qualunque linguaggio capace di aprire la porta USB come seriale in lettura è in grado di ricevere dati seriali dall'Arduino.
Io l'ho fatto con Gambas su Linux, quindi non credo ci siano problemi con altri linguaggi.

Qualche guida di inizializzazione? :smiley:

la via più semplice (e più usata) è usando processing, che è java modificato per essere un pò più facile. Tra l'altro l'IDE è molto simile a quello arduino :slight_smile:

esempio di seriale (con tanto di codice arduino!) sempre dal sito processing, che contiene una marea di esempi!
http://www.processing.org/learning/library/serialcallresponse.html

Semplice il java?!?
Dio ce ne scampi.
Se hai Word o Excel, vai di visual basic (ALT+F11).
http://www.arduino.cc/playground/Italiano/Pobleminoti#Autoreset

ESEMPIO in Visual Basic for Applications (incluso in Microsoft Office): Connettere prima al progetto la libreria Microsoft Comm Control (MSCOMM32.OCX) , poi usare questo codice:

Dim MSComm1 As Object

Sub ArduinoOpen() Set MSComm1 = CreateObject(“MSCOMMLib.MSComm”) MSComm1.Settings = “9600,n,8,1? MSComm1.CommPort = 4 MSComm1.InBufferCount = 0 MSComm1.DTREnable = False MSComm1.PortOpen = True If Err Then MsgBox “COM” & MSComm1.CommPort & “: not opened, Sorry!” Exit Sub End If End Sub

Sub ArduinoClose() MSComm1.PortOpen = False Set MSComm1 = Nothing End Sub

ESEMPIO in python:

ser = serial.Serial(‘COM4?, 9600, bytesize=8, parity=’N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=True)

ESEMPIO in processing:

String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);

non ho detto che java sia facile (che comunque lo è), ma che processing lo sia molto di più, e anche del VB, oltre che funzionare su win, mac & linux

Con processing come stabilisco che è proprio la porta COM3 per esempio?

il comando String portName = Serial.list();
restituisce un array di stringhe contenetnte tutte le COM disponibili.
ma se sei sicuro di usare COM3, allora basta fare:

myPort = new Serial(this, "COM3", 9600);

Ti ringrazio per la risposta! :smiley:

Un'ultima domanda! Ma con processing posso scrivere un programma per esempio con pulsanti, checkbox ecc ecc!? Insomma come detto prima, un programma come firmata test!

ciao io ho scritto un programma in c++, che legge da seriale simulata. se cerchi nei post di arduino trovi il codice che ho implementato in c++ e quello caricato su arduino

Non sono molto esperto di comunicazioni seriali, tieni conto che sono un diciassettenne che frequenta il 4° anno di un ITI nella specializzazione di elettronica e telecomunicazioni.
Cosa significa seriale simulata?

la seriale di arduino è una seriale simulata visto che in realtà la comunicazione è via USB.
senza stare a complicarsi la vita, con processing le textbox eccetera le puoi fare con una libreria "controlp5"

E dove trovo questa libreria?

Grazie xD l'avevo trovata! :smiley: Vediamo un po! :slight_smile:

Dai una occhiata anche a matlab, che è veramente il più semplice da usare e puoi elaborare i dati ricevuti facendoci qualsiasi cosa ti venga in mente, in maniera molto semplice...

Puoi anche usare l'excel per ricevere i dati e fare grafici in tempo reale.
Qui una semplice guida: Gioblu.com is for sale | HugeDomains

alegiaco:
Puoi anche usare l'excel per ricevere i dati e fare grafici in tempo reale.
Qui una semplice guida: Gioblu.com is for sale | HugeDomains

Grazie mille! Interessantissimo ma non era quello che cercavo!

P.S.
Potrei quindi creare un piccolo oscilloscopio :stuck_out_tongue:

esiste già qualcosa sul vecchio forum in inglese.
In particolare hanno lavorato a basso livello per diminuire al minimo il tempo di campionamento (settando il prescaler dell'ADC) e non hanno rilevato grosse differenze nei dati di input.