/* 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... }