1. Idée : MOINS est le symétrique de PLUS ; les bornes de α s'appliquent après le calcul, juste avant PWM1_Set_Duty.TRISB := $FF; TRISC := $FB; // TRISC = %11111011
PWM1_Init(4000);
N := ADC_Read(0);
begin delay_ms(40);
if (alpha > 0.1) then K := K - 0.1; end;
alpha := N / 1023 + K;
if (alpha > 0.9) then alpha := 0.9;
if (alpha < 0.1) then alpha := 0.1;
Seule RC2 est en sortie : 11111011, soit FB en hexadécimal. delay_ms(40) est l'anti-rebond : le contact rebondit pendant quelques millisecondes, on attend la fin des rebonds avant de modifier K. Les tests alpha < 0.9 et alpha > 0.1 refusent de modifier K quand α est déjà à sa borne.
2. Idée : N est entier, α est un réel ; seule la partie entière de 255α part vers le module PWM.
N=51023×2,2=450,12⇒N=450 α=1023450≈0,440 255α≈112,17 : PWM1_Set_Duty reçoit 112.
Umoy=255112×24≈10,54 V 3. Idée : chaque appui teste d'abord α ; le calcul suivant est ensuite borné.
| Appui | 1 | 2 | 3 | 4 | 5 | 6 |
|---|
| K | 0,1 | 0,2 | 0,3 | 0,4 | 0,5 | 0,5 |
| α | 0,54 | 0,64 | 0,74 | 0,84 | 0,90 | 0,90 |
Au 5e appui, N/1023+K≈0,94>0,9 : α est ramené à 0,9. Au 6e, le test alpha < 0.9 est faux : K n'est plus modifié.
Après le 3e appui, 255×0,74≈188,7 donne 188 :
Umoy=255188×24≈17,69 V À la borne haute, 255×0,9=229,5 donne 229 :
Umoy=255229×24≈21,55 V 4. N=1023×0,3/5=61,38, soit N=61 ; 61/1023≈0,060<0,1, donc α=0,1. 255×0,1=25,5 : le module reçoit 25, Umoy=25/255×24≈2,35 V. Un appui sur MOINS ne fait rien : alpha > 0.1 est faux. Les boutons ne peuvent pas arrêter l'extracteur.
5. Idée : avec <=, une borne atteinte laisse encore passer le test. Après le 5e appui, α=0,9 ; aux appuis 6, 7 et 8, 0.9 <= 0.9 est vrai : K passe à 0,6, 0,7 puis 0,8, mais le bornage maintient α=0,9 et rien ne change. Sur MOINS, K redescend à 0,7, 0,6, 0,5 sans effet visible (α calculé vaut encore 1,14, 1,04, 0,94) ; ce n'est qu'au 4e appui (K=0,4) que α tombe à 0,84. Il faut donc 4 appuis sur MOINS : l'opérateur croit le bouton en panne pendant les trois premiers. Le test strict alpha < 0.9 évite cette réserve cachée.