WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Conception et réalisation d'un robot mobile à  base d'arduino

( Télécharger le fichier original )
par Hocine TAKHI
Université Amar Telidji - Instrumentation 2014
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

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");

}

}

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Des chercheurs qui cherchent on en trouve, des chercheurs qui trouvent, on en cherche !"   Charles de Gaulle