Offline
Newbie
Karma: 0
Posts: 39
|
 |
« Reply #15 on: September 24, 2012, 03:16:44 am » |
Ok ti ringrazio allora farò ulteriori prove.
Ascolta io per fare delle prove lato arduino utilizzo il metodo Serial.print o println per vedere cosa combina.
Per far vedere questi valori l'unico modo è attivare la consolle con ctrl maiusc h ???
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16545
Don't know what I do
|
 |
« Reply #16 on: September 24, 2012, 04:14:41 am » |
Se stai comunicando con l'Arduino da Processing non penso tu possa aprire anche il terminale dell'IDE. La seriale può essere impegnata per 1 comunicazione a volta.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 39
|
 |
« Reply #17 on: September 24, 2012, 04:16:22 am » |
E si infatti lo avevo immaginato. Resta da fare qualche esperimento. Ho letto in giro che è possibile tramite Processing leggere cioè che arudino scrive tramite l'istruzione Serial.print....
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 2
Posts: 98
|
 |
« Reply #18 on: September 24, 2012, 07:36:43 am » |
E si infatti lo avevo immaginato. Resta da fare qualche esperimento. Ho letto in giro che è possibile tramite Processing leggere cioè che arudino scrive tramite l'istruzione Serial.print....
si certo puoi leggere quello che c'è sulla serial con processing quindi potresti fare una cosa così Processing->arduino->processing ovvio però che c'è più spazio per gli errori
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 39
|
 |
« Reply #19 on: September 25, 2012, 07:22:21 am » |
Ciao, volevo ringraziare tutti per le risposte ma purtroppo non sono ancora riuscito a combinare nulla. Ho provato come ha suggerito leo72 a scrivere questo codice lato arduino if (Serial.read() == 'R') { analogWrite(PIN_RED, Serial.read()); }
Come risultato ho che sul secondo Serial.read() ad arduino gli arriva un -1 Ho provato tramite processing ad inviare ad arduino sulla seriale con il metodo .write le varie stringhe R100 oppure ad inviare R 100 richiamando due volte il metodo, nel primo caso non succede nulla nel secondo caso si accende il led rosso veramente debole ma gli arriva un -1 quindi insomma non so più che pesci prendere... sono ben lieto di seguire altri consigli.... grazie a tutti
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 2
Posts: 98
|
 |
« Reply #20 on: September 25, 2012, 10:44:04 am » |
non so se ti può essere di aiuto ma il -1 in "codice" vuole dire che la serial.read dell'arduino non ha trovato niente da leggere
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 39
|
 |
« Reply #21 on: September 26, 2012, 02:20:28 am » |
Ciao certo che mi può essere utile in pratica da quello che ho potuto vedere, io gli sparo arduinoPort = new Serial (porta seriale di arduino, 9800); codice.....
arduinoPort.write("R"); arduinoPort.write("100");
Mentre ho visto in giro che molti utilizzano tra le due chiamate un delay(500); Da quello che ho capito questo metodino fa aspetaare l'invio di 1/2 secondo, quindi magari può essere questo... Voi che dite?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 2
Posts: 98
|
 |
« Reply #22 on: September 26, 2012, 02:44:37 am » |
secondo me è come il delay nella lettura dell'arduino...non è scritto da nessuna parte di metterlo però se non lo metti fa i capricci prova a metterlo questo delay tra i due invii e facci sapere
forse mezzo secondo è tanto se ti interessa un pò la velocità potresti provare a diminuirlo piano piano (sempre se funziona)
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 39
|
 |
« Reply #23 on: September 26, 2012, 02:55:02 am » |
ok le sto provando tutte proverò anche questa al mio rientro, grazie a tutti per la collaborazione... spero di farvi avere buone nuove
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 12
|
 |
« Reply #24 on: September 26, 2012, 03:08:10 am » |
Ciao ,
non ho capito perchè vuoi inviare ad arduino R?.. i colori su RGB led sono una combinazione di valori... quindi al posto di inviare R... invia direttamente la sequenza del colore.. tipo:
Processing:
myPort.write("C"); // inizializza la sequenza rgb myPort.write(0); myPort.write(255); myPort.write(255);
a seconda della combinazione crei un colore.. quindi se vuoi associare ad un tasto "ROSSO" l'evento accendi led rosso .. basta inviare via seriale la sequenza di valori rgb.. che arduino può gestire così:
Arduino:
void loop() { if (Serial.available() > 0) { inByte = Serial.read(); if (inByte == 'C') { R=Serial.read(); G=Serial.read(); B=Serial.read(); } analogWrite(redPin, R); analogWrite(bluePin, B); analogWrite(greenPin, G); } delay(10); }
Credo che tu debba creare delle if in processing per la scelta del colore, mentre arduino accende il led in base ai valori ricevuti...
Infine non ricordo bene la differenza ma credo che google possa aiutarti a scoprirlo, se il led è ad anodo comune è spento per valori (0 , 0 , 0 ) , se è a catodo comune è spento per valori (255,255,255).. (potrebbero essere invertite le cose), dunque fai attenzione anche a questo..
|
|
|
|
« Last Edit: September 26, 2012, 03:12:30 am by steeveO »
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 39
|
 |
« Reply #25 on: September 26, 2012, 03:28:01 am » |
Allora ho notato questa cosa infatti i led si accendono se metto 0 e si spengono con 255.
Io voglio inviare R perchè sulla schermata dello smartphone ho 3 slider uno che comanda l'intensità del led rosso una del blu e una del giallo.
Ecco perchè volevo avere i led separati. Appena rientro provo ovviamente se capita qualcuno che ha già avuto questa esperienza e vuole condividere il suo codice o i suoi consigli io accetto tutto.
Appena posso posto il codice.
Ciao e grazie
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16545
Don't know what I do
|
 |
« Reply #26 on: September 26, 2012, 03:59:58 am » |
Risposte in ordine sparso.
Non serve un delay sull'invio dato che l'Arduino ha un buffer di ricezione di 64 byte dove colloca ciò che arriva dalla seriale in maniera del tutto trasparente al codice (tramite interrupt) per cui anche se non sei a leggere subito, non perdi nulla. Un Serial.read non legge materialmente dalla seriale HW ma preleva il primo byte disponibile (se c'è) dal buffer.
Se con 0 accendi e 255 spengi mi sa che stai usando un LED RGB montato male. Esistono led RGB ad anodo comune oppure a catodo comune. I primi hanno l'alimentazione in comune ed i canali in uscita sono i catodi, il segnale PWM corrisponde a 0 per tutto acceso e 255 per tutto spento, quindi la luminosità la stabilisci con (255-valore). La logica è invertita rispetto a quelli a catodo comune, dove il segnale PWM pilota direttamente gli anodi dei led (quindi 0 = tutto spento, 255 = tutto acceso).
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 12
|
 |
« Reply #27 on: September 26, 2012, 04:12:23 am » |
Ciao..
Infatti io ti proponevo proprio questo
tu ogni volta che modifichi l'intensità del colore invii via seriale i 3 valori di intensità per il rosso per il verde e per il blu.
analogWrite(pinred,intensitàrosso); analogWrite(pingreen,intensitàverde); analogWrite(pinblue, intensitàblu);
quindi se ti trovi nella situazione
0 0 0 (rgb)
e vuoi accendere il led con colore rosso invii
255 0 0
a seconda che il led sia ad anodo o catodo comune.
ed il gioco è fatto..
con tre righe di codice hai risolto ..
io ho usato questo codice per realizzare un visualizzatore di spettro audio.. caricando su arduino le semplici "3 righe di codice", e facendo gestire a processing tutto il resto. Ti faccio notare che comunque sia, anche se invii il comando ROSSO , devi comunque settare i parametri pwm degli altri colori (in questo caso spegnendo blu e verde).
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 39
|
 |
« Reply #28 on: September 27, 2012, 04:37:57 am » |
Allora ragazzi finalmente ieri in tarda serata ho risolto il problema dei led.
IL codice di arduino che avevo postato prima era giusto, l'errore invece era lato processing che una volta attivato il tasto inviava ciclicamente comandi ad arduino che non riusciva mai a terminare il lavoro. Facendo qualche test, println ho capito tutto ed ora funziona. Appena rientro prometto di inserire tutto il codice di Arduino e Processing.
Non so ma vorrei allegare proprio i file anche di processing però non so come si possa fare.
Il codice di processing è buono secondo me al 90%, forse qualche miglioria si può fare.
Grazie ancora
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16545
Don't know what I do
|
 |
« Reply #29 on: September 27, 2012, 08:09:26 am » |
Non so ma vorrei allegare proprio i file anche di processing però non so come si possa fare.
Il codice di processing è buono secondo me al 90%, forse qualche miglioria si può fare.
Grazie ancora
Clicchi su "Additional Options" sotto all'area dove inserisci il messaggio e poi alleghi il file o lo zip.
|
|
|
|
|
Logged
|
|
|
|
|
|