/*
Transmission par liaison série de la commande d'une LED RGB
Format de transmission retenu : "rouge;vert;bleu;" exemple : 50;150;250; +LF (code ascii 10)
Programme incomplet : il faut compléter le programme dans les zones signalées par ...
*/

/* 1) Zone 1 : les déclarations */

// 1.b) Les Constantes 
const int R=9,G=...(1),B=...(2);
// 1.c) Les variables globales
int rouge=0,vert=0,bleu=0,car;

/* 2) Zone 2 : Initialisation (le setup) */
void setup()
{
  pinMode(R, OUTPUT); // affecter la patte R en sortie pour alimenter la LED R
  ...(3) // affecter la patte G en sortie pour alimenter la LED G
  ...(4) // affecter la patte B en sortie pour alimenter la LED B
  ...(5)// Initialiser la liaison série Serial à 9600 bauds
  Serial.println("Format de transmission retenu : rouge;vert;bleu exemple : 50;150;250");
}

/* 3) Zone 3 : le Programme Principal */
void loop()
{
   if (Serial.available()) {   // Si le buffer série reçoit des données : on lit le buffer série
                               // Exemple buffer = "50;150;250; +LF" 
     delay(100);             // Attendre la fin de transmission           
     
     rouge=Serial.parseInt(); // rouge = 50 reste ds le buffer :";150;250; +LF" 
     ...(6) // vert = 150 reste ds le buffer :";250; +LF"
     ...(7) // bleu = 250 reste ds le buffer :"; +LF"

     while (Serial.available()) Serial.read();  // Vider le buffer Serial s'il reste des caractères...  
     
     analogWrite(R,rouge);   // écrire la valeur rouge pour la LED R 
     ...(8) // écrire la valeur vert pour la LED G 
     ...(9) // écrire la valeur bleu pour la LED B
     
     Serial.print("Rouge = "); Serial.print(rouge);  // Afficher le résultat sur le moniteur série
     Serial.print("\t Vert = "); Serial.print(vert);
     Serial.print("\t Bleu = "); Serial.println(bleu);
                             }   // fin de  if (Serial.available())
}