Salve a tutti, come posso fare per inviare a Processing più dati diversi tra loro. Faccio un esempio per essere più chiaro:
Voglio inviare sulla seriale attraverso il comando println() lo stato di 3 ingressi digitali e di 2 analogici.
Non è indispensabile inviarli contemporaneamente, ma devono essere identificati: non posso solamente inviare "213" perchè processing non saprebbe a quale ingresso corrisponde. Bisognerebbe inviare qualcosa del tipo:
D1 = H
D2 = L
D3 = H
A1 = 213
A2 = 405
Come posso fare in arduino ? E come posso interpretare questi comandi in processing ?
Non vi sto chiedendo i listati, ma almeno i comandi che devo usare. Grazie 1000 !
Ciao ragazzi, ciao Uccio. Sono bloccato anche io su questo punto.
Sto cercando di fare cross processing da roborealm a processing. Non posso utilizzare la seriale usb perchè è gia occupata dalla comunicazione tra processing e arduino, quindi sto salvando un file txt con roborealm con all'interno i dati acquisiti dalla webcam. Il mio problema è suddividere un valore dall'altro. Se scrivo:
lines = String("vision.txt");
println(lines);
Mi escono i dati e il numero della stringa tra parentesi quadre [].
Non riesco a trasformare la stringa in un integer e computarla.
io ottengo un valore da 0 a 400 in base a dove è la persona rispetto alla webcam, 0 è il valore piu' a sinistra 400 il valore piu' a destra, vorrei scrivere una cosa tipo:
if (lines >250) {
girati a destra quindi servo.write ecc.
}
E' inutile ... ho provato in un sacco di modi ma non riesco a trovare una soluzione che va bene !
Ho provato a inviare i dati da arduino con una serie di print concatenati conclusi da un println.
In processing ho letto questa stringa, l'ho suddivisa secondo i ";" ma c'è un problema: se io invio il numero 3 e il numero 15 come risultato ho:
3 ;15
cioè dopo il 3 mi mette uno spazio e mi fa casino ... non posso riconvertirlo in int
Ma non c'è una soluzione semplice per inviare a processing ed elaborare lo stato di qualche uscita ?!?
EDIT:
Spiego meglio in che cosa consiste il mio progetto così magari avete idee differenti:
Tramite Arduino Mega gestisco 16 relè per comandare le luci di casa e 16 pulsanti. Tralasciando le altre funzioni come il controllo temperatura ambiente e i dimmer ... vorrei collegare un pannello touchscreen con windows attraverso la porta usb.
Ho fatto l'interfaccia grafica tramite processing dove posso anche comandare dal pannello le luci, vorrei però che lo stato delle luci fosse visualizzabile da pannello.
Per questo volevo fare in modo che Arduino invii a processing qualcosa del tipo:
e processing dovrebbe fare più o meno questo:
se Lampadina 1 = accesa allora colore scritta 1 = verde else rosso
se Lampadina 2 = accesa allora colore scritta 2 = verde else rosso
se Lampadina 3 = accesa allora colore scritta 3 = verde else rosso
testo scritta 4 = temperatura stanza 1
ecc ...
prova a utilizzare con processing la funzione split(); (cerca nelle reference) tramite quella puoi suddividere una string in un array di valori int per esempio int[] nomearray = int(split(lastringa[indirizzostringa], ';')); cosi' suddividi la stringa in int suddivisi da ;.
lo spazio si scrive /n
non funziona ... in processing comunque per trasformare una stringa in int si usa
int myString_split_15 = Integer.parseInt(myString_split[15]);
Comunque mi esce un errore NumberFormatExeption: For input string: "0"
La stringa viene splittata correttamente perchè se faccio
print (myString_split_15);
mi scrive 0, allora ho usato una funzione che mi permette di leggere solo parte della stringa, così ho letto solo la parte della stringa dove c'era il valore che mi interessava ma neanche così va bene: Per valori da 0 a 9 va bene ma per valori più alti no ... ecco perchè:
Che casino !!! uffa ma non c'è un modo più semplice ?!?! Anche ad inviare una variabile per volta ... però vanno identificate ... se no come faccio a sapere che relè o dimmer è !
mmm Ciao Ambrogio.
Vai a vedere il mio post "problemi di cross processing" li trovi spiegato come faccio a spedirmi piu' valori composti da 3 cifre su una stessa linea.
Cmq come te l'ho scritta, se la completi correttamente dovrebbe funzionare.