/*
Réaliser un générateur de signaux rectangulaires, de fréquence 1 kHz, de rapport cyclique réglable 
entre 10% (par valeur supérieure) et 90% (par valeur inférieure). Tolérance 1%
Transmission par liaison série du rapport cyclique
Format de transmission retenu : "alpha" exemple : 50+LF (code ascii 10)
*/

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

// 1.b) Les Constantes 
const int R=3;                // Patte utilisée

// 1.c) Les variables globales
... // variables entières : alpha,alphaT,rouge;
... // t0 de type long non signé

/* 2) Zone 2 : Initialisation (le setup) */
void setup()
{
  ... // affecter la patte R en sortie pour alimenter la LED R
  ... // Initialiser la liaison série Serial à 9600 bauds
  Serial.println("Format de transmission retenu pour un rapport cyclique de 25 % : 25");
}

/* 3) Zone 3 : le Programme Principal */
void loop()   // les commentaires sont le pseudocode généré par le logiciel LARP
{
    // t0=micros()
    // ÉCRIRE High DANS D3
       
/* Boucle d'attente jusqu'à alphaT en µs */
   // TANTQUE t-t0 < alphaT FAIRE
       //     SI Serial.available() ALORS
       //         EXÉCUTER Lireconsigne()
       //     FINSI
   // FINTANTQUE
       
   // ÉCRIRE low DANS D3

/* Boucle d'attente jusqu'à T = 1000 µs */
     // TANTQUE t-t0 < T FAIRE
     // FINTANTQUE
}

/* 4) Zone 4 : Les fonctions utilisateur : */
void Lireconsigne() {           // Fonction utilisateur pour lire la consigne transmise par le moniteur série
     ... // Attendre 10 ms la fin de transmission 
     ... // lire alpha rapport cyclique
     if (alpha<10) alpha=10; // Borne inférieure 10%
     ... // Borne supérieure 90%
     alphaT=alpha*10; //  valeur de l'attente en µs, 1ms = 1000 µs = 100*10,  alphaT = alpha*T
     while (Serial.available()) Serial.read();  // Vider le buffer Serial s'il reste des caractères... 
     }