const int R=3; 
int alpha=0,rouge;

void setup()
{
  pinMode(R, OUTPUT); // affecter la patte R en sortie pour alimenter la LED R
  Serial.begin(9600); // Initialiser la liaison série Serial à 9600 bauds
  Serial.println("Format de transmission retenu pour un rapport cyclique de 25 % : 25");

  /* Timer 2 patte 3 et 11
  PWM = 6 broches OC0A(PD6 - 6), OC0B(PD5 - 5 ), 0C1A(PB1 - 9), OC1B(PB3 - 11), OC2A(PB3 - 11),OC2B(PD3 - 3)
  WaveGenerationMode = 7 = Fast PWM top OCR2A = WGM22 WGM21 WGM20   (WGM22 sur TCCR2B et WGM21 WGM20 sur TCCR2A)
  Fast-PWM mode Compare Output Mode = Basule OC2A (PB3 - 11) on Compare Match = COM2A0 en mode CTC pas de Fast PWM
  Fast-PWM mode Compare Output Mode = Basule OC2B (PD3 - 3) on Compare Match = COM2B1
  http://garretlab.web.fc2.com/en/arduino/inside/arduino/wiring_analog.c/analogWrite.html
  */
  TCCR2A = _BV(COM2A0) | _BV(COM2B1)| _BV(WGM21) | _BV(WGM20);  // Mode 7 Fast-PWM top OCR2A
  TCCR2B = _BV(WGM22) | _BV(CS22);                             // Prescaler 64 (CS22, Clock/64) => 250 kHz
  OCR2A = 249;                                                  //Registre de comparaison A = 249 => Fréquence de la PWM : 250kHz/(249+1)= 1 KHZ sur la patte 3
                                                               // Par défaut OCR2A=255 => Fréq. PWM = 250kHz/(255+1) = 976.5 Hz
  OCR2B = 49;                                                  // Registre de comparaison B = 49 => rapport cyclique 49+1/(249+1) = 50 / 250 = 20 % 
}

void loop()
{

   if (Serial.available()) {   // Si le buffer série reçoit des données : on lit le buffer série                             
     delay(10);                // Attendre 10 ms la fin de transmission 
     
     alpha=Serial.parseInt(); // lire alpha rapport cyclique
     if (alpha<10) alpha=10; // Borne inférieure 10%
     if (alpha>90) alpha=90; // Borne supérieure 90%
     rouge=2.49*alpha;   
     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 
     OCR2B=rouge;          // pour remplacer analogWrite(R,rouge);
     
     Serial.print("alpha = "); Serial.print(alpha);  // Afficher le résultat sur le moniteur série
     Serial.print("\t Rouge = "); Serial.println(rouge);
                             }   // fin de  if (Serial.available())
 
 }