02-24-2016, 10:55 AM
(This post was last modified: 03-04-2016, 07:38 PM by Technomaker.)
Buongiorno,
ho da pochi giorni iniziato a testare il prodotto e volevo provare a costruire un pannello con il quale variare la tonalità dei colori di un led sui tre canali RGB.
Ho scritto il seguente codice, costruendo correttamente in pannello e provando ad agire sul solo canale red intervenendo sul valore del pin analogico 3, per poi attivarlo per gli altri canali; non funziona !!!
Qualcuno può darmi una mano a capirne di più?
Credo ci siano due tipologie di problemi, la prima legata al riconoscimento della stringa per i valori restituiti da #R1:XXX e successivamente la conversione degli stessi in intero per il comando serial.write.
Ringrazio anticipatamente.
// pins for the LED RGB:
const int redPin = 3;
const int greenPin = 5;
const int bluePin = 6;
int value=0;
void setup() {
// initialize serial:
Serial.begin(57600);
delay(3000);
Serial.println("\n$PING 200");
// make the pins outputs:
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.print("$P:{M1#F00*10:Prova >>;}//T#0F0*20fi:Prova Led RGB;/*15T#F00:RED;R1!F00,00Fr20*15:0:255:1:50:100;///T#0F0:GREEN;R2!F00,00Fr20*15:0:255:1:50:100;///T#00FF:BLUE;R3!F00,00Fr20*15:0:255:1:50:100;");
}
String button_id;
String Msg;
void loop() {
int c;
while ((c = Serial.read()) > '\n') Msg += (char) c; // Read incoming chars, if any, until new line
if (c == '\n') // is the message complete?
{
if (Msg.substring(0,4).equals("#R1:"))
{
button_id = Msg.substring(4);
value= button_id.toInt();
if (value>=0&&value<=250) analogWrite(redPin, value);
Msg=("");
}
}
}
ho da pochi giorni iniziato a testare il prodotto e volevo provare a costruire un pannello con il quale variare la tonalità dei colori di un led sui tre canali RGB.
Ho scritto il seguente codice, costruendo correttamente in pannello e provando ad agire sul solo canale red intervenendo sul valore del pin analogico 3, per poi attivarlo per gli altri canali; non funziona !!!
Qualcuno può darmi una mano a capirne di più?
Credo ci siano due tipologie di problemi, la prima legata al riconoscimento della stringa per i valori restituiti da #R1:XXX e successivamente la conversione degli stessi in intero per il comando serial.write.
Ringrazio anticipatamente.
// pins for the LED RGB:
const int redPin = 3;
const int greenPin = 5;
const int bluePin = 6;
int value=0;
void setup() {
// initialize serial:
Serial.begin(57600);
delay(3000);
Serial.println("\n$PING 200");
// make the pins outputs:
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.print("$P:{M1#F00*10:Prova >>;}//T#0F0*20fi:Prova Led RGB;/*15T#F00:RED;R1!F00,00Fr20*15:0:255:1:50:100;///T#0F0:GREEN;R2!F00,00Fr20*15:0:255:1:50:100;///T#00FF:BLUE;R3!F00,00Fr20*15:0:255:1:50:100;");
}
String button_id;
String Msg;
void loop() {
int c;
while ((c = Serial.read()) > '\n') Msg += (char) c; // Read incoming chars, if any, until new line
if (c == '\n') // is the message complete?
{
if (Msg.substring(0,4).equals("#R1:"))
{
button_id = Msg.substring(4);
value= button_id.toInt();
if (value>=0&&value<=250) analogWrite(redPin, value);
Msg=("");
}
}
}