Go Down

Topic: Aiuto per lettura valori RGB (Read 2 times) previous topic - next topic

ale92

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

bircastri

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);

Code: [Select]

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?

ale92

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)

bircastri

ok le sto provando tutte proverò anche questa al mio rientro, grazie a tutti per la collaborazione... spero di farvi avere buone nuove

steeveO

#24
Sep 26, 2012, 10:08 am Last Edit: Sep 26, 2012, 10:12 am by steeveO Reason: 1
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..

Go Up