Envoyer une chaine de caractères sur le port serie

Bonjour,

Je cherche a écrire un petit programme pour contrôler la couleur d'une LED RGB.
L'idée est d'envoyer la couleur souhaitée sous la forme d'un code hexadecimal (genre 'FB9A49'), et de la stocker dans une variable pour l'utiliser ensuite.

Je ne sait vraiment pas comment m'y prendre pour résoudre ce problème. Quelqu'un saurait m'expliquer comment je dois m'y prendre?

Merci

tu peux utiliser la librairie "serial"

regarde les exemples pour chaque fonction

Gozaki

www.laboelectronique.be

Oui, pour le moment j'utilise serial de la facon suivante:

if( Serial.available())
{
int incomingByte = Serial.read();
Serial.println(incomingByte, BYTE);
}

Ça fonctionne très bien quand il s'agit d'envoyer un seul caractère à l'arduino. Par contre, je ne voit pas comment faire pour en envoyer 6 à la fois, et les stocker dans une seule variable. (je débute en C)

J'ai pas mal galéré au début aussi avec ce genre de chose ^^

Tu trouveras ton bonheur ici je pense (en anglais par contre mais le code est facilement compréhensible) :

http://www.earthshineelectronics.com/files/ASKManualRev4.pdf

Pour résumé il faut utiliser des chaines de caractère que tu remplis à l'aide d'une boucle.

WOW!

Géniale cette doc! Merci B@tto!

Voici le code qui marche:

Il suffit d'envoyer les valeurs rgb sous cette forme: r255 g152 b56 (l'ordre n'est pas important) et la couleur de la led est mise a jour.

// Project 10 - Serial controlled RGB Lamp

char buffer[18];
int red, green, blue;
int RedPin = 11;
int GreenPin = 10;
int BluePin = 9;

void setup()
{
Serial.begin(9600);
Serial.flush();
pinMode(RedPin, OUTPUT);
pinMode(GreenPin, OUTPUT);
pinMode(BluePin, OUTPUT);
}

void loop()
{
if (Serial.available() > 0)
{
int index=0;
delay(100); // let the buffer fill up
int numChar = Serial.available();
if (numChar>15)
{
numChar=15;
}
while (numChar--)
{
buffer[index++] = Serial.read();
}
splitString(buffer);
}
}

void splitString(char* data)
{
Serial.print("Data entered: ");
Serial.println(data);
char* parameter;
parameter = strtok (data, " ,");
while (parameter != NULL)
{
setLED(parameter);
parameter = strtok (NULL, " ,");
}
// Clear the text and serial buffers
for (int x=0; x<16; x++)
{
buffer[x]='\0';
}
Serial.flush();
}

void setLED(char* data)
{
if ((data[0] == 'r') || (data[0] == 'R'))
{
int Ans = strtol(data+1, NULL, 10);
Ans = constrain(Ans,0,255);
analogWrite(RedPin, Ans);
Serial.print("Red is set to: ");
Serial.println(Ans);
}

if ((data[0] == 'g') || (data[0] == 'G'))
{
int Ans = strtol(data+1, NULL, 10);
Ans = constrain(Ans,0,255);
analogWrite(GreenPin, Ans);
Serial.print("Green is set to: ");
Serial.println(Ans);
}

if ((data[0] == 'b') || (data[0] == 'B'))
{
int Ans = strtol(data+1, NULL, 10);
Ans = constrain(Ans,0,255);
analogWrite(BluePin, Ans);
Serial.print("Blue is set to: ");
Serial.println(Ans);
}
}