vorrei iniziare a sperimentare qualcosa di nuovo per fa interagire il mio arduino tramite un applicazione a finestre.
Leggendo in giro per giorni ho trovato esempi in C# e Python per la maggiore, ma putroppo non trovo esempi semplici e ben documentati per poter apprendere senza per forza leggersi 200 pagine di manuale.
Ho realizzato uno sketch per il mio arduino dove controllo temperatura e umidità di un ambiente, semplicemente vorrei creare un applicazione dove poter analizzare i dati provenienti dalla seriale e visualizzarli magari in una barra graduata (tipo progress bar) oppure impostare i valori limiti tramite text input.
Non vorrei imparare subito tutto ma solo lo stretto necessario al momento e pian piano accrescere la mia cultura, putroppo sono un auto didatta ed il mio metodo è sempre stato questo.
Per capire cosa intendo credo sia perfetto il modo con cui scrive gli articoli Mauro Alfieri (Tutorial Arduino Ethernet e SD Card - Mauro Alfieri Wearable Domotica Robotica Elettronica) ad esempio qui viene commentata riga per riga ed in questo modo tra i vari esempi si riesce a iniziare ad entrare nel meccanismo
Ad esempio in questi giorni ho trovato spiegazioni con Python, tipo per far comparire una finestra di dialogo:
Iniziavo ad essere sulla buona strada ma il tutorial si limita ad aggiungere un pulsante e niente piu, avete qualche buon consiglio e qualche buon link che faccia al caso mio?
Tk è un toolkit per poter realizzare GUI per computer. Se vuoi usare questo toolkit devi studiarlo. Se vuoi usare altri toolkit, non devi far altro che fare riferimento ai vari siti (es. Shoes, GTK, Qt, wxWidgets ecc..).
Grazie Leo per la risposta, ho solo fatto un esempio parlando di Tk ma visto che devo inizare cercavo un consiglio soprattutto sul tipo di linguaggio con in quale iniziare e magari qualche link che faccia al caso mio.
Stiamo parlando lato PC, giusto?
Usa perciò un linguaggio di programmazione di tua scelta, non sei obbligato all'uso del Python, voglio dire.
Tutti permettono di usare dei toolkit per costruire le GUI (se sono linguaggi di script, come Python, Ruby, ecc) e di dialogare sulla seriale. Molti hanno anche un ambiente integrato ed alcuni un proprio costruttore di interfacce grafiche.
Ma alla fine si tratta di leggere dei dati e di riprodurli sullo schermo.
Tu su che SO lavori? Su che linguaggio saresti orientato?
Lavoro prevalentemente con linux ma ho anche la possibilità di usare Visual Studio 2012 con win7.
Io infatti con Python ho fatto solo un esempio perchè era l'unico linguaggio dove ho trovato qualche informazione base per iniziare senza leggermi tutto il manuale. Ho avuto a che fare con ASP ormai anni fa, un po di piu con PHP, BASH, C, praticamente non ho mai avuto a che fare con le GUI quindi per partire cercavo qualcosa di friendly.
Pensavo di buttarmi sul C++ ma purtroppo la documentazione che ho trovato per spippolare con le gui è stata davvero poca e molto articolata.
leo72:
Ma alla fine si tratta di leggere dei dati e di riprodurli sullo schermo.
.....per questo non avrei voglia/tempo di leggermi tutto il manuale e sono in cerca di consigli
Per ogni toolkit ci sono più binding a linguaggi.
Per Qt con python c'è PySide
In ogni caso purtroppo c'è da studiare. Per Qt c'è da studiare tanto ma tanto come pure per gtk e gtkmm, ma sono potentissimi toolkit con i quali realizzare applicazioni di ogni tipo. Interessanti sono le GUI Qt con linguaggio declarative, ma occorre apprendere un nuovo linguaggio oltre che i concetti base comuni a tutte le gui.
In Qt, pygtk (e sicuramente anche gli altri) ci sono molti esempio di applicazioni GUI da cui partire, ma mi sembra di capire che vorresti qualcosa di immediato e semplice e ho letto di FLUID (FLTK) ma ne so quanto ne sai tu.
Puoi provare Processing, IDE simil Arduino (ide di Arduino deriva da quello di Processing), linguaggio Java simil-C
Gira su Windows, Mac e Linux.
Per disegnare interfaccia, libreria G4P che ha un suo designer.
grazie per la dritta su processing sto iniziando a spippolare qualcosa con GUIbuilder e lo trovo davvero friendly per me, ma ovviamente ho solo un altra domanda.
su arduino :
int num = 0;
Serial.println(num);
String var;
su processing:
// Need G4P library
import g4p_controls.*;
import processing.serial.*;
import cc.arduino.*;
Serial commPort;
String var;
public void setup(){
size(480, 320, JAVA2D);
createGUI();
customGUI();
// Place your setup code here
commPort = new Serial(this, Serial.list()[0], 9600);
commPort.bufferUntil('\n');
}
public void draw(){
background(230);
if ( commPort.available() > 0)
{ // If data is available,
var = commPort.readStringUntil('\n'); // read it and store it in val
}
Ho creato una gui con un label e vorrei visualizzare la String var in label1.setText(var);
non vedo niente che proviene da arduino, la com è giusta (credo, almeno non da errore), cosa posso modificare?