Go Down

Topic: Arduino comandato da Processing via web tramite pc o smartphone Android (Read 30905 times) previous topic - next topic

camperos

#30
Nov 28, 2013, 09:12 pm Last Edit: Nov 28, 2013, 09:16 pm by camperos Reason: 1
Zio Wally@
nono, tu devi insegnare a me, il tuo sketch con le classi è fantastico e chiaro, io il mio (per ora) non lo posto è disordinato e lungo piu di 2000 righe.

passando su tablet o cell android, la prima cosa da tenere in considerazione è la dimensione dello schermo,
altezza - larghezza, pixel
http://processing.org/reference/displayWidth.html.
ma non basta questo

la seconda, se inizi con processing .x e arduino ide.x, non aggiornare mai!  ]:D ]:D

testato

#31
Nov 28, 2013, 11:03 pm Last Edit: Nov 28, 2013, 11:10 pm by Testato Reason: 1

emh non mi è chiaro "ad uso arduinico".

Intendo dire che processing nasce come sw di rpogrammazione prima che nascesse arduino stesso, Massimo banzi ha copiato da loro l'IDE, ma non c'entra nulla.

Processing e' in primis un linguaggio di rpogrammazione con il quale puoi scrivere un sw da caricare su android per far lampeggiare lo schermo del telefono (sto' facendo u esempio), senza che arduino entri in mezzo.
Se vai sul forum di rpocessing la maggior parte non sa nemmeno cosa sia Arduino  :)

Solo dopo quando e' nato arduino si e' iniziato ad usare processing per scrivere applicazioni che si interfacciano ad arduino,
a questo punto ci sono due modi, uno e' caricare Firmata su Arduino e gestire il tutto via Processing, logicamente in questo caso puoi solo fare cioe' che ti permette firmata.
Oppure ti scrivi sia il fw lato arduino sia il sw lato rpocessing per fare qualcosa, senza firmata.
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

camperos

#32
Nov 28, 2013, 11:31 pm Last Edit: Nov 30, 2013, 01:19 am by camperos Reason: 1
ok adesso mi è chiaro :)


fvlgnn

Scusate, ma non andrebbe bene utilizzare una scheda SD Dove al'interno metti un file di testo con all'interno il DNS da utilizzare?

camperos


@ZioWally

non sono riuscito a far funzionare il tuo sketch  nel mio pc.
  Gli sketch di esempio che si trovano in rete (arduino ethernet - processing) via UDP riesco a farli funzionare.


per accedere con android via wifi a detti sketch , basta  caricare lo sketch processing su android
e comandi il tutto da android, ho  provato ora

ZioWally

Ho fatto una verifica del zip che ho postato e confermo che almeno da me funziona.
Non capisco se proprio non ti parte o se quando lanci processig vedi solo mezza interfaccia senza i pulsanti .
Nel secondo caso io ho sempre trovato questo problema quando non inserivo il corretto indirizzo IP sia in arduino (che lo trovi direttamente nello sketch .ino), sia in processing (che invece lo modifichi editando il file link.txt nella prima riga).
In particolare occhio a quando modifichi il link.txt nella cartella Data. Ho visto che non accetta righe remmate o con commenti, devi lasciarlo semplice e pulito come lo trovi nel mio zip.

Per quanto riguarda la gestione delle classi pulsanti ed altro, non è tutta farina del mio sacco. All'inizio della discussione ho citato le fonti che poi ho adattato alle mie necessità.

Per la faccenda android sono sempre più curioso e devo trovare il tempo di provare, ma funziona solo con android 4.1 o anche con la 2.3.6 gingerbread? Io ho proprio quella...

ps
Verifica anche il mac address della scheda ethernet, ho visto che se non è corretta può non funzionare.

camperos

#36
Dec 03, 2013, 06:48 pm Last Edit: Dec 04, 2013, 12:02 am by camperos Reason: 1
processing 2.0.3
arduino 1.0.5

ci sono i misteri  :smiley-roll-sweat:
il codice arduino mi da subito errore,
poco male hovisto che è un pin digitale




edit:
ho cancellato la parte che si riferivano a prove sbagliate nel tentativo di usare arduino UNO  (P99-ciao ciao)

ZioWally

ciao,

L'errore che mi segnali è dovuto dal fatto che lo sketch è pensato per arduino MEGA, avevo troppi pin da gestire per cui UNO sarebbe stato insufficiente senza aggiungere qualche "protesi" che mi aumentasse i pin.
Quindi il pin A8 è l'analogico 8 che naturalmente manca in UNO. Se lo compili come Mega/ADK non ti si presenta più l'errore.
il pin A8 prevede un sensore lm35 che ancora non è stato implementato correttamente, io per le mie prove l'ho sostituito con un trimmer da 10k, tanto per verificare il protocollo di trasmissione.

Non capisco però perchè il comando P99 non funzioni e ciao ciao invece si.
Se funziona con una frase deve funzionare anche con un'altra (se tutte le regole if sono coerenti con il comando-frase impostato). Però anche ciao ciao non è male come comando :smiley-mr-green: e da quello che ho provato il protocollo UPD è pensato per trasferire ben più byte di quelli di un semplice saluto...

camperos

Code: [Select]
int PinTemp1 =  A8; 
---
pinMode(PinTemp1, INPUT);


mi ha spiazzato la dichiarazione nel setup.
comunque appena posso collego il MEGA e ti so dire

camperos

col MEGA è partito al primo colpo  :smiley-sleep:

c'è la possibilita di far funzionare il tuo programma su arduino UNO?
la domanda sembra banale,  ma ho riprovato a collegare la UNO  cambiando la dichiarazione del pin 8   non funziona.

comunque grazie, sto gia modificando un mio lavoro  ;)

ZioWally

Come ti dicevo, ho scelto MEGA per avere più pin disponibili,
Se lo vuoi usare con UNO devi ridefinire il pin analogico, magari prendi il pin A8 e lo sostituisci con un altro tra A0 e A5 (quelli disponibili per UNO).
Stessa cosa per i pin digitali, che devono essere ridotti di numero e rinominati.
La mia scelta dei pin è legata ad uno schema di collegamenti con schede relè più comodo e razionale .

La stessa interfaccia processing è esuberante per UNO, se non aumenti i pin tramite un port expander tipo PCF8574 più della metà dei pulsanti è inutilizzabile.
Con la gestione a classi dei pulsanti però è abbastanza comodo togliere e riposizionare pulsanti secondo il tuo gusto e necessità.
Volendo, con meno pin si può alleggerire anche la gestione dei comandi, senza trasformare lo status dei pulsanti in bit e poi in byte da trasmettere. Con un semplice comando diretto tipo "Pin3Acceso" o  "Pin3Spento".

Magari sarebbe bello sviluppare una versione del telecomando per UNO che sfrutta tutti i pin standard disponibili, ma con un'interfaccia più piccola dedicata a display per smartphone android...  :D

camperos

questa sera provo ad adattare l'interfaccia  ad android...
il tuo sketch su android funziona anche con spento processing pc

foto fatta malissimo

ZioWally

altro che fatta malissimo... foto ottima! :smiley-mr-green:
sono molto contento che funzioni, praticamente sta già parlando con arduino? Quindi tramite scheda ethernet?
se la tua risposta è affermativa, ti nomino co-autore del progetto! :smiley-mr-green:
GRANDE CAMPEROS!

camperos

#43
Dec 04, 2013, 10:37 pm Last Edit: Dec 04, 2013, 10:54 pm by camperos Reason: 1
tramite ethernet e router, senza pc   :)

speravo di riuscire ad adattare il tutto su diversi schermi..
ma c'e' un problema, es:

posizione
Code: [Select]
rect (30,30,100,200);
è la stessa posizione di (piu o meno)
Code: [Select]
rect (width/64 , width/64 ,width/1.2, width/ 9.6);
e non da errore, non impazzire ti spiegherò perche  .

il problema sta nel punto decimale che, quando il numero è basso, se non lo metto la posizione cambia di molto.
l'esempio sopra funziona, ma in:

Code: [Select]
Pulsante0 = new Boton(width/4.5, width/38,  Etichette[0], "P00");
errore:
Code: [Select]
(float, int, String, String) is undefined
se al posto di 4.5 inserisco 4, non da errore ma la posizione cambia

e quindi non è possibile "adattare",
non accetta il float    =( =( =(





ZioWally

non ho provato ma sono d'accordo con te.
la soluzione può essere:
a) inserire dei valori già calcolati e impostati da un elenco predefinito
b) evitare che il calcolo "rect (width/64..." etc lo faccia in quel punto. Magari lo facciamo calcolare come float a parte e poi lo assegnamo ad una variabile che prende il posto di width/64.

gli facciamo trovare il punto già pulito in formato int...
questa sera non riesco a provare, ma domani sera spero di riuscirci.

Go Up