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





Changeons ce systeme injuste, Soyez votre propre syndic





"Et il n'est rien de plus beau que l'instant qui précède le voyage, l'instant ou l'horizon de demain vient nous rendre visite et nous dire ses promesses"   Milan Kundera