| Annexe B :Algorithme et programme 88 Annexe B : Algorithme et programme Le programme global
:  Algorithme robot ; Var C : String; Commande : String ='manu' ; Début Si (il y a réception) Alors Commande 4- réception() ; FinSi Au cas où (Commande) vau `manu' : marcher_manu() ; `auto' : marcher_auto() ; Fin de cas Fin Fin algorithme La fonction marcher_manu() : Procédure marcher_manu() Const en1: Byte=34; en2: Byte=35; in1: Byte=2; in2: Byte=3; in3:
Byte=4; in4: Byte=5; pmp: Byte=27; Var Ordre : String; v_if: int ; v_thr: int ; niveau :int ; Début : Si (il y a réception) Alors Ordre 4- réception(); FinSi Au cas où (Ordre) vau `Avant' : Si (Vérifier_obstacle() = 0) Alors faire(`av') ; Sinon faire(`st') ; FinSi `Arriérer' : faire(`ar') ; `Droit' : Si (Vérifier_obstacle() = 0) Alors faire(`dr') ; Sinon faire(`st') ; FinSi `Gauche' : Si (Vérifier_obstacle() = 0) Alors faire(`gc') ; Sinon faire(`st') ; 89 FinSi `Pompe' : faire(`pmp') ; `Stop' : faire(`st') ; `maj_if : v_if= Mise_à_jour(`cpif') ; `maj_thr : v_thr= Mise_à_jour(`cpthr') ; `niv' : niveau= Mise_à_jour(`niv') ; Fin de cas Fin La fonction marcher_auto() : Procédure marcher_auto() Var Coté : String; Début Si (Vérifier_flamme() = `rien') Alors Si (Vérifier_obstacle() = 0) Alors faire (`av') ; Sinon Repeter faire (`dr') ; Tant que (Vérifier_obstacle() = 1) faire (`st') ; FinSi Sinon Tant que (Vérifier_flamme() ? `flamme') Faire Si (Vérifier_obstacle() = 0) Alors Coté ? Vérifier_flamme() ; Positionner(Coté) ; faire (`av') ; attendre (1000ms) ; faire (`st') ; Sinon Repeter faire (`dr') ; Tant que (Vérifier_obstacle() = 1) faire (`av') ; attendre(2000ms) ; faire (`st') ; FinSi Tant que (Vérifier_flamme() = `flamme') Faire faire (`pmp') 90 FinSi Fin La fonction Vérifier_obstacle() : int Fonction Vérifier_obstacle() Const trig_ob: Byte=22; echo_ob: Byte=23; trig_fr: Byte=24;
echo_fr: Byte=25;dis_nrm_ob: Byte =24; dis_nrm_fr: Byte =18; Var dis_ob :long ; temps_ob: long; temps_fr: long; dis_fr :
long;sig_fvo :int ; Byte rep; Début définie trig_ob comme sortie ; ecrire_numérique(trig_ob, 0) ; définie echo_ob comme entré ; définie trig_fr comme sortie ; ecrire_numérique(trig_fr, 0) ; définie echo_fr comme entré ; attender (2us) ; ecrire_numérique(trig_ob, 1) ; attender (10us) ; ecrire_numérique(trig_ob, 0) ; dis_ob 4- temps de reception en echo_ob ; attender (2us) ; ecrire_numérique(trig_fr, 1) ; attender (10us) ; ecrire_numérique(trig_fr, 0) ; dis_fr 4- temps de reception en echo_ob ; Si ((dis_ob < dis_nrm_ob) ou (dis_fr > dis_nrm_fr))
Alors sig_fvo=1 ; Sinon sig_fvo=0 ; FinSi Retourn(sig_fvo) ; Fin La fonction Vérifier_flamme() : Fonction Vérifier_flamme() Const cif_av :Byte= 0; cif_dr :Byte=1 ; cif_ar :Byte=2 ;
cif_gc :Byte=3 ; cthr:Byte=5 ; val_nrm_if: int =Mise_à_jour("cpif")+10; val_nrm_thr: int
=Mise_à_jour("cpthr")+20; Var val_av:int; val_dr:int; val_ar:int; val_gc:int;
val_thr:int;val_max:int; Var sig_fvf :String; Début val_av 4- lire cif_av; val_dr 4- lire cif_dr; val_ar 4- lire
cif_ar; val_gc 4- lire cif_gc; 91 val_pr 4 lire cif_pr; val_thr 4 lire cif_thr; val_max 4 max(val_av, val_dr) ; val_max 4 max(val_max, val_ar) ; val_max 4 max(val_max, val_gc) ; val_fnct_if =Mise_à_jour(`cpif') ; Si( (val_av > val_nrm_if) et (val_av >= val_max)) Alors Si (val_dr > val_gc) Alors Sig_fvf = `av_dr' ; Sinon Si (val_gc > val_dr) Alors Sig_fvf = `av_gc' ; Sinon Sig_fvf= `av' ; FinSi Sinon Si ((val_ar > val_nrm_if) et (val_ar >= val_max))
Alors Si (val_dr > val_gc) Alors Sig_fvf = `ar_dr' ; Sinon Si (val_gc > val_dr) Alors Sig_fvf = `ar_gc' ; Sinon Sig_fvf= `ar' ; FinSi Sinon Si (val_dr > val_nrm_if) et (val_dr >= val_max))
Alors Sig_fvf= `dr' ; Sinon Si (val_gc > val_nrm_if) et (val_gc >= val_max))
Alors Sig_fvf= `gc' ; Sinon Sig_fvf = `rien' FinSi Si (val_thr > val_nrm_thr) Alors Si (Sig_fvf ? rien) Alors Sig_fvf ='flamme' ; FinSi FinSi Fin La fonction Positionner() : Procédure Positionner (String direct) Const cif_av :Byte= 0; cif_pr :Byte=4; cif_ar :Byte=2; Var val_pr:int; val_av:int; val_ar:int; Début val pr 4 lire cif pr ; Au cas où (direct) vau `av_dr' : 92 faire(`dr') ; attendre(20ms) ; faire(`st') ; Tant que (val_pr < lire cif_pr) Faire val_pr F lire cif_pr ; faire(`dr') ; attendre(20ms) ; faire(`st') ; faire(`gc') ; attendre(20ms) ; faire(`st') ; `av_gc' : faire(`gc') ; attendre(20ms) ; faire(`st') ; Tant que (val_pr < lire cif_pr) Faire val_pr F lire cif_pr faire(`gc') ; attendre(20ms) ; faire(`st') ; faire(`dr') ; attendre(20ms) ; faire(`st') ; `ar_dr' : val_ar F lire cif_ar -20 ; Tant que (lire cif_av < val_ar) Faire faire(`dr') ; faire(`st') ; Tant que (val_pr < lire cif_pr) Faire val_pr F lire cif_pr ; faire(`dr') ; attendre(20ms) ; faire(`st') ; faire(`gc') ; attendre(20ms) ; faire(`st') ; `ar_gc' : val_ar F lire cif_ar -20 ; Tant que (lire av < val_ar) Faire faire(`gc') ; faire(`st') ; Tant que (val_pr < lire cif_pr) Faire val_pr F lire cif_pr ; faire(`gc') ; attendre(20ms) ; faire(`st') ; 93 faire(`dr') ; attendre(20ms) ; faire(`st') ; `av' : faire(`dr') ; attendre(20ms) ; faire(`st') ; Si (val_pr < lire cif_pr) Alors Tant que (val_pr < lire cif_pr) Faire val_pr 4 lire cif_pr ; faire(`dr') ; attendre(20ms) ; faire(`st') ; faire(`gc') ; attendre(20ms) ; faire(`st') ; Sinon Si (val_pr > lire cif_pr) Alors faire(`gc') ; attendre(40ms) ; faire(`st') ; Tant que (val_pr < lire cif_pr) Faire val_pr 4 lire cif_pr ; faire(`gc') ; attendre(20ms) ; faire(`st') ; faire(`dr') ; attendre(20ms) ; faire(`st') ; FinSi `ar' : Val_ar 4 lire cif_ar-20 Tant que (lire av < Val_ar) Faire faire(`dr') ; faire(`st') ; Tant que (val_pr < lire cif_pr) Faire val_pr 4 lire cif_pr ; faire(`dr') ; attendre(20ms) ; faire(`st') ; faire(`gc') ; attendre(20ms) ; faire(`st') ; Fin de cas Fin La fonction faire() : 94 Procédure faire(String action) Const en1: Byte=34; en2: Byte=35; in1: Byte=2; in2: Byte=3; in3:
Byte=4; in4: Byte=5; pmp: Byte=27; led_rouge:Byte=42; ig: int=200; id:int
=(((7.0358*ig)-628.21))/4.617; istp: int=90; Var i:int;act_prcd: String; Début définie en1 comme sortie ; définie en2 comme
sortie ; définie in1 comme sortie ; définie in2 comme sortie ;
définie in3 comme sortie ; définie in4 comme sortie ;
définie pmp comme sortie ; ecrire_numérique(en1, 0) ;
ecrire_numérique(en2, 0) ; ecrire_numérique(in1, 0) ;
ecrire_numérique(in2, 0) ; ecrire_numérique(in3, 0) ;
ecrire_numérique(in4, 0) ; ecrire_numérique(pmp, 0) ; Au cas
où (action) vau `av' : ecrire_numérique(en1, 1) ; ecrire_numérique(en2,
1) ; ecrire_analogique(in1, id) ; ecrire_numérique(in2, 0) ;
ecrire_analogique(in3, ig) ; ecrire_numérique(in4, 0) ; `ar' : `dr' ; `gc' : act_prcd ? `av' ; ecrire_numérique(en1, 1) ; ecrire_numérique(en2,
1) ; ecrire_numérique(in1, 0) ; ecrire_analogique(in2, id) ;
ecrire_numérique(in3, 0) ; ecrire_analogique(in4, ig) ; act_prcd ? `ar' ; ecrire_numérique(en1, 0) ; ecrire_numérique(en2,
1) ; ecrire_ numérique (in1, 0) ; ecrire_numérique(in2, 0) ;
ecrire_analogique(in3, ig) ; ecrire_numérique(in4, 0) ; act_prcd ? `dr' ; ecrire_numérique(en1, 1) ; 95 ecrire_numérique(en2, 0) ; ecrire_analogique(in1, id) ;
ecrire_numérique(in2, 0) ; ecrire_ numérique(in3, 0) ;
ecrire_numérique(in4, 0) ; act_prcd ? `gv' ; `st' : i=50, Si (act_prcd = `av') Alors Pour i de 50 à istp pas 1 faire
ecrire_numérique(en1, 1) ; ecrire_numérique(en2, 1) ; ecrire_numérique(in1,
0) ; ecrire_analogique(in2, i) ; ecrire_numérique(in3, 0) ;
ecrire_analogique(in4, i) ; attendre (20us) ; FinPour ecrire_numérique(en1, 0) ; ecrire_numérique(en2, 0) ; ecrire_numérique(in1,
0) ; ecrire_numérique(in2, 0) ; ecrire_numérique(in3, 0) ;
ecrire_numérique(in4, 0) ; Sinon Si (act_prcd = `ar') Alors Pour i de 50 à istp pas 1 faire ecrire_numérique(en1, 1) ; ecrire_numérique(en2,
1) ; ecrire_analogique(in1, i) ; ecrire_numérique(in2, 0) ;
ecrire_analogique(in3, i) ; ecrire_numérique(in4, 0) ; attendre (20us)
; FinPour ecrire_numérique(en1, 0) ; ecrire_numérique(en2, 0) ; ecrire_numérique(in1,
0) ; ecrire_numérique(in2, 0) ; ecrire_numérique(in3, 0) ;
ecrire_numérique(in4, 0) ; Sinon Si (act_prcd = `dr') Alors Pour i de 50 à istp pas 1 faire ecrire_numérique(en1, 1) ; ecrire_numérique(en2,
0) ; ecrire_numérique (in1, 0) ; ecrire_numérique(in2, 0) ; 96 ecrire_ numérique(in3, 0) ; ecrire_analogique(in4, i) ;
attendre (20us) ; FinPour ecrire_numérique(en1, 0) ; ecrire_numérique(en2,
0) ; ecrire_numérique(in1, 0) ; ecrire_numérique(in2, 0) ;
ecrire_numérique(in3, 0) ; ecrire_numérique(in4, 0) ; Sinon Si (act_prcd = `gc') Alors Pour i de 50 à istp pas 1 faire
ecrire_numérique(en1, 0) ; ecrire_numérique(en2, 1) ; ecrire_
numérique(in1, 0) ; ecrire_analogique(in2, i) ;
ecrire_numérique(in3, 0) ; ecrire_numérique(in4, 0) attendre
(20us) ; FinPour ecrire_numérique(en1, 0) ; ecrire_numérique(en2,
0) ; ecrire_numérique(in1, 0) ; ecrire_numérique(in2, 0) ;
ecrire_numérique(in3, 0) ; ecrire_numérique(in4, 0) ; Sinon ecrire_numérique(en1, 0) ; ecrire_numérique(en2, 0) ; ecrire_numérique(in1,
0) ; ecrire_numérique(in2, 0) ; ecrire_numérique(in3, 0) ;
ecrire_numérique(in4, 0) ; FinSi act_prcd 4- `st' ; `pmp' : Si (niveau < 120000) ecrire_numérique(pmp, 1) ; attendre(2000ms) ;
ecrire_numérique(pmp, 0) ; niveau 4- niveau+1 ; Sinon ecrire_numérique(led_rouge, 1) ; attendre(500ms) ; ecrire_numérique(led_rouge, 0) ; FinSi 97 Fin de cas Fin La fonction Mise_à_jour() : Fonction Mise_à_jour(String capteur) Const cif_av :Byte= 0; cif_dr :Byte=1 ; cif_ar :Byte=2 ; cif_gc
:Byte=3 ; cthr:Byte=5 ; Var v_cp: int; v_cp1: int; v_av :int; v_ar :int; v_dr
:int; v_gc :int; val_fcnt_if:int=500; Début Si (capteur ='cpif') Alors v_av 4 lire cif_av ; v_ar 4 lire cif_ar ; v_dr 4 lire cif_dr ; v_gc 4 lire cif_gc ; v_cp1=max(v_av , v_ar) ; v_cp1=max(v_cp, v_dr) ; v_cp1=max(v_cp, v_gc) ; Si (v_cp1 < val_fnct_if) ecrire_numérique(led_rouge, 0) ; v_cp 4 v_cp1; Sinon ecrire_numérique(led_rouge, 1) ; v_cp 4 10000; FinSi Sinon Si (capteur ='cpthr') Alors v_cp 4 lire cthr ; Sinon Si (capteur ='niv') Alors v_cp 4 0 ; ecrire_numérique(led_rouge, 0) ; FinSi returen(v_cp) Fin La fonction réception() : String Fonction réception() Const in_rc :Byte=30 ; Var rec : unsigned long ;val_rec :String ; Début Si (il y a réception) Alors rec 4 lire in_rc ; FinSi ; Au cas où (rec) vau 2160004084: val_rec 4 `manu' ; 2160014284: val_rec 4 `auto' ; 98 2160032644: val_rec 4 `Avant' ; 2160028564: val_rec 4 `Arriérer' ; 2160008164: val_rec 4 `Droit' ; 2160057124: val_rec 4 `Gauche' ; 2160024484: val_rec 4 `Pompe' ; 2160061204: val_rec 4 `maj_if' ; 2160055084: val_rec 4 `maj_thr' ; 2160046924: val_rec 4 `niv'; 2160016324 : val_rec 4 `Stop'; 4294967295 : val_rec 4 val_rec ; Fin de cas Return(val_rec); Fin Le programme #include <IRremote.h> const byte in_rc = 30, trig_ob = 22, echo_ob = 23, trig_fr = 24,
echo_fr = 25, cif_av = 0, cif_dr = 1, cif_ar = 2, cif_gc = 3, cthr = 5, cif_pr = 4, en1 = 34, en2 = 35, in1 = 2,
in2 = 3, in3 = 4, in4 = 5, pmp = 27, led_rouge = 42; String Commande; int niveau, val_nrm_if, val_nrm_thr; IRrecv irrecv(in_rc); decode_results results; void setup() { irrecv.enableIRIn(); pinMode(led_rouge, OUTPUT); pinMode(trig_ob, OUTPUT); digitalWrite(trig_ob, 0); pinMode(echo_ob, INPUT); pinMode(trig_fr, OUTPUT); digitalWrite(trig_fr, 0); pinMode(echo_fr, INPUT); pinMode(en1, OUTPUT); pinMode(en2, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); 99 pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(pmp, OUTPUT); pinMode(led_rouge, OUTPUT); digitalWrite(en1, 0); digitalWrite(en2, 0); digitalWrite(in1, 0); digitalWrite(in2, 0); digitalWrite(in3, 0); digitalWrite(in4, 0); digitalWrite(pmp, 0); digitalWrite(led_rouge, 0); niveau = Mise_a_jour("niv"); val_nrm_if = Mise_a_jour("cpif")+10; val_nrm_thr = Mise_a_jour("cpthr")+20; } void loop() { if (irrecv.decode(&results)) { Commande = reception(); irrecv.resume(); } Commande = Commande;/* */ if (Commande == "auto") { marcher_auto(); } else { marcher_manu(); } } String reception() { unsigned long rec; String val_rec; rec = results.value; switch (rec) { case 2160004084 : val_rec = "manu"; break; case 2160014284: val_rec = "auto"; break; case 2160032644 : 100 val_rec = "Avant"; break; case 2160028564 : val_rec = "Arriérer"; break; case 2160008164 : val_rec = "Droit"; break; case 2160057124 : val_rec = "Gauche"; break; case 2160024484 : val_rec = "Pompe"; break; case 2160061204 : val_rec = "maj_if"; break; case 2160055084 : val_rec = "maj_thr"; break; case 2160046924: val_rec = "niv"; break; case 2160016324: val_rec = "Stop"; break; case 4294967295: val_rec = val_rec; break; } return (val_rec); } void marcher_manu() { String Ordre; if (irrecv.decode(&results)) { Ordre = reception(); irrecv.resume(); } if (Ordre == "Avant") { if (Verifier_obstacle() == 0) { faire("av"); } else 101 { faire("st"); } } else if (Ordre == "Arriérer") { faire("ar"); } else if (Ordre == "Droit") { if (Verifier_obstacle() == 0) { faire("dr"); } else { faire("st"); } } else if (Ordre == "Gauche") { if (Verifier_obstacle() == 0) { faire("gc"); } else { faire("st"); } } else if (Ordre == "Stop") { faire("st"); } else if (Ordre == "Pompe") { faire("pmp"); } else if (Ordre == "maj_if") { val_nrm_if = Mise_a_jour("cpif"); } else if (Ordre == "maj_thr") { val_nrm_thr = Mise_a_jour("cpthr"); } else if (Ordre == "niv") 102 { niveau = Mise_a_jour("niv"); } } void marcher_auto() { String Cote; if (Verifier_flamme() == "rien") { if (Verifier_obstacle() == 0) { faire("av"); } else { do { faire("dr"); } while (Verifier_obstacle() == 1); faire("st"); } } else { while (Verifier_flamme() != "flamme") { if (Verifier_obstacle() == 0) { Cote = Verifier_flamme(); Positionner(Cote) ; faire ("av") ; delay(1000) ; faire("st") ; } else { do { faire("dr"); } while (Verifier_obstacle() == 1); faire ("av") ; delay(2000) ; faire("st") ; } } while (Verifier_flamme() == "flamme") { 103 faire("pmp"); } } } int Verifier_obstacle() { const byte dis_nrm_ob = 24, dis_nrm_fr = 18; long temps_ob, dis_ob, temps_fr, dis_fr; int sig_fvo; byte rep; delayMicroseconds(2); digitalWrite(trig_ob, 1); delayMicroseconds(10); digitalWrite(trig_ob, 0); temps_ob = pulseIn(echo_ob, 1); delayMicroseconds(2); digitalWrite(trig_fr, 1); delayMicroseconds(10); digitalWrite(trig_fr, 0); temps_fr = pulseIn(echo_fr, 1); dis_ob = temps_ob * 340 / 20000; dis_fr = temps_fr * 340 / 20000; if ((dis_ob < dis_nrm_ob) || (dis_fr > dis_nrm_fr)) { sig_fvo = 1; } else { sig_fvo = 0; } return (sig_fvo); } String Verifier_flamme() { int val av, val ar, val dr, val gc, val thr, val 
max; String sig_fvf; val_av = analogRead(cif_av); val_ar = analogRead(cif_ar); val_dr = analogRead(cif_dr); val_gc = analogRead(cif_gc); val_thr = analogRead(cthr); val_max = max(val_av, val_ar); val_max = max(val_max, val_dr); val_max = max(val_max, val_gc); if ((val_av > val_nrm_if) && (val_av >=
val_max)) { 104 if (val_dr > val_gc) { sig_fvf = "av_dr"; } else if (val_gc > val_dr) { sig_fvf = "av_gc"; } else { sig_fvf = "av"; } } else if ((val_ar > val_nrm_if) && (val_ar >=
val_max)) { if (val_dr > val_gc) { sig_fvf = "ar_dr"; } else if (val_gc > val_dr) { sig_fvf = "ar_gc"; } else { sig_fvf = "ar"; } } else if ((val_dr > val_nrm_if) && (val_dr >=
val_max)) { sig_fvf = "dr"; } else if ((val_gc > val_nrm_if) && (val_gc >=
val_max)) { sig_fvf = "gc"; } else { sig_fvf = "rien"; } if ((val_thr > val_nrm_thr)) { if (sig_fvf != "rien") { sig_fvf = "flamme"; } } 105 return (sig_fvf); } void faire(String action) { const int ig = 200, id = ((7.0358 * ig) - 628.21) / 4.617,
istp = 90; String act_prcd; int i; if (action == "av") { digitalWrite(en1, 1); digitalWrite(en2, 1); analogWrite(in1, id); digitalWrite(in2, 0); analogWrite(in3, ig); digitalWrite(in4, 0); act_prcd = "av"; } else if (action == "ar") { digitalWrite(en1, 1); digitalWrite(en2, 1); digitalWrite(in1, 0); analogWrite(in2, id); digitalWrite(in3, 0); analogWrite(in4, ig); act_prcd = "ar"; } else if (action == "dr") { digitalWrite(en1, 0); digitalWrite(en2, 1); digitalWrite(in1, 0); digitalWrite(in2, 0); analogWrite(in3, ig); digitalWrite(in4, 0); act_prcd = "dr"; } else if (action == "gc") { digitalWrite(en1, 1); digitalWrite(en2, 0); analogWrite(in1, id); digitalWrite(in2, 0); digitalWrite(in3, 0); digitalWrite(in4, 0); act_prcd = "gc"; } 106 else if (action == "st") { if (act_prcd == "av") { for (i = 50; i <= istp; i++) { digitalWrite(en1, 1); digitalWrite(en2, 1); digitalWrite(in1, 0);
analogWrite(in2, i); digitalWrite(in3, 0); analogWrite(in4, i);
delayMicroseconds(20); } digitalWrite(en1, 0); digitalWrite(en2, 0); digitalWrite(in1, 0);
digitalWrite(in2, 0); digitalWrite(in3, 0); digitalWrite(in4, 0); } else if (act_prcd == "ar") { for (i = 50; i <= istp; i++) { digitalWrite(en1, 1); digitalWrite(en2, 1); analogWrite(in1, i);
digitalWrite(in2, 0); analogWrite(in3, i); digitalWrite(in4, 0);
delayMicroseconds(50); } digitalWrite(en1, 0); digitalWrite(en2, 0); digitalWrite(in1, 0);
digitalWrite(in2, 0); digitalWrite(in3, 0); digitalWrite(in4, 0); } else if (act_prcd == "dr") { for (i = 50; i <= istp; i++) { digitalWrite(en1, 1); digitalWrite(en2, 1); digitalWrite(in1,
0); 107 digitalWrite(in2, 0); digitalWrite(in3, 0); analogWrite(in4,
i); delayMicroseconds(50); } digitalWrite(en1, 0); digitalWrite(en2, 0); digitalWrite(in1, 0);
digitalWrite(in2, 0); digitalWrite(in3, 0); digitalWrite(in4, 0); } else if (act_prcd == "gc") { for (i = 50; i <= istp; i++) { digitalWrite(en1, 1); digitalWrite(en2, 1); digitalWrite(in1, 0);
analogWrite(in2, i); digitalWrite(in3, 0); digitalWrite(in4, 0);
delayMicroseconds(50); } digitalWrite(en1, 0); digitalWrite(en2, 0); digitalWrite(in1, 0);
digitalWrite(in2, 0); digitalWrite(in3, 0); digitalWrite(in4, 0); } else { digitalWrite(en1, 0); digitalWrite(en2, 0); digitalWrite(in1, 0);
digitalWrite(in2, 0); digitalWrite(in3, 0); digitalWrite(in4, 0);
digitalWrite(pmp, 0); } act_prcd == "st"; } else if (action == "pmp") { if (niveau < 120000) 108 { digitalWrite(pmp, 1); delay(2000); digitalWrite(pmp, 0); delay(1000); niveau++; } else { digitalWrite(led_rouge, 1); delay(500); digitalWrite(led_rouge, 0); delay(500); } } } int Mise_a_jour(String capteur) { const int val_fcnt_if = 500; int v_cp, v_cp1, v_av, v_ar, v_dr, v_gc; if (capteur == "cpif") { v_av = analogRead(cif_av); v_ar = analogRead(cif_ar); v_dr = analogRead(cif_dr); v_gc = analogRead(cif_gc); v_cp1 = max(v_av, v_ar); v_cp1 = max(v_cp, v_dr); v_cp1 = max(v_cp, v_gc); if (v_cp1 < val_fcnt_if) { v_cp = v_cp1; digitalWrite(led_rouge, 0); } else { v_cp = 10000; digitalWrite(led_rouge, 1); } } else if (capteur == "cpthr") { v_cp = analogRead(cthr); } else if (capteur == "niv") { 109 v_cp = 0; digitalWrite(led_rouge, 0); } return (v_cp); } void Positionner(String direct) { int val_pr, val_av, val_ar; val_pr = analogRead(cif_pr); if (direct == "av_dr") { faire("dr"); delay(20); faire("st"); while (val_pr < analogRead(cif_pr)) { val_pr = analogRead(cif_pr); faire("dr"); delay(20); faire("st"); } faire("gc"); delay(20); faire("st"); } else if (direct == "av_gc") { faire("gc"); delay(20); faire("st"); while (val_pr < analogRead(cif_pr)) { val_pr = analogRead(cif_pr); faire("gc"); delay(20); faire("st"); } faire("dr"); delay(20); faire("st"); } else if (direct == "ar_dr") { val_ar = analogRead(cif_ar) - 20; while (analogRead(cif_av < val_ar)) { faire("dr"); 110 } faire("st"); while (val_pr < analogRead(cif_pr)) { val_pr = analogRead(cif_pr); faire("dr"); delay(20); faire("st"); } faire("gc"); delay(20); faire("st"); } else if (direct == "ar_gc") { val_ar = analogRead(cif_ar) - 20; while (analogRead(cif_av < val_ar)) { faire("gc"); } faire("st"); while (val_pr < analogRead(cif_pr)) { val_pr = analogRead(cif_pr); faire("gc"); delay(20); faire("st"); } faire("dr"); delay(20); faire("st"); } else if (direct == "av") { faire("dr"); delay(20); faire("st"); if (val_pr < analogRead(cif_pr)) { while (val_pr < analogRead(cif_pr)) { val_pr = analogRead(cif_pr); faire("dr"); delay(20); faire("st"); } faire("gc"); 111 delay(20); faire("st"); } else if (val_pr > analogRead(cif_pr)) { faire("gc"); delay(40); faire("st"); while (val_pr < analogRead(cif_pr)) { val_pr = analogRead(cif_pr); faire("gc"); delay(20); faire("st"); } faire("dr"); delay(20); faire("st"); } } else if (direct == "ar") { val_ar = analogRead(cif_ar) - 20; while (analogRead(cif_av < val_ar)) { faire("dr"); } faire("st"); while (val_pr < analogRead(cif_pr)) { val_pr = analogRead(cif_pr); faire("dr"); delay(20); faire("st"); } faire("gc"); delay(20); faire("st"); } } |