Moteur pas à pas + LDR et temporisation

Bonjour
J'ai un projet de motorisation d'un projecteur avec un moteur pas à pas qui tourne dans un sens puis revient en sont point de départ, le système se déclenche dans l'obscurité avec une LDR mon souhait serait d'avoir une temporisation de 60 secondes plus importante que les 10 secondes initiale
Si vous pouvez m'aider merci

const int LED = 10; 
const byte pinLed4 = 9;
const int DelayMs = 10;        /* 1/10E-3 =100 Hz*/
const int DelayMs_Init = 10;
const int Num_Half_Step= 250; /*64*8*/;
int i= 0;

const int OUT1 = 2;
const int OUT2 = 3;
const int OUT3 = 4;
const int OUT4 = 5;

const int SENS1 = 7;
const int SENS2 = 8;


void setup() {
  
 pinMode(LED, OUTPUT); //met la broche en sortie
   pinMode(pinLed4, OUTPUT);
  digitalWrite(pinLed4, LOW);

  pinMode(OUT1, OUTPUT);
  pinMode(OUT2, OUTPUT);
  pinMode(OUT3, OUTPUT);
  pinMode(OUT4, OUTPUT);

  pinMode(SENS1, OUTPUT);
  pinMode(SENS2, OUTPUT);


  digitalWrite(OUT1, LOW);
  digitalWrite(OUT2, LOW);
  digitalWrite(OUT3, LOW);
  digitalWrite(OUT4, LOW);

  digitalWrite(SENS1, LOW);
  digitalWrite(SENS2, LOW);

  delay(30000);

}

void loop() {

  // Sens 1

  digitalWrite(SENS1, HIGH);
  digitalWrite(SENS2, LOW);

  for(i=0; i<Num_Half_Step;i++)
  {
    // 1 - 0001
    digitalWrite(OUT1, HIGH);
    delay(DelayMs);

    // 3 - 0011
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 2 - 0010
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 6 - 0110
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 4 - 0100
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 12 - 1100
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 8 - 1000
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 9 - 1001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, LOW);

    delay(DelayMs_Init);
    
  }

  // Sens 2

  digitalWrite(SENS1, LOW);
  digitalWrite(SENS2, HIGH);

  for(i=5; i<Num_Half_Step;i++)//for(i=0; i<Num_Half_Step;i++)
  {

    // 9 - 1001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 8 - 1000
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 12 - 1100
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 4 - 0100
    digitalWrite(OUT4, LOW);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 6 - 0110
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 2 - 0010
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 3 - 0011
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 1 - 0001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, LOW);
    delay(DelayMs);

    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, LOW);

    delay(DelayMs_Init);
 
  }
    digitalWrite(LED,HIGH); // met la broche au niveau haut (5V) – allume la LED

delay(500); // pause de 500 millisecondes (ms)

digitalWrite(LED,LOW); // met la broche au niveau bas (0V) – éteint la LED

delay(500); // pause de 500ms

  int valeur = analogRead(A0);  //lecture de la valeur sur la pin A0

  Serial.println(valeur);  // on écrit la valeur obtenu dans le moniteur série
  delay(250);  // on attend 250ms

 if (valeur > 894) {  // si la valeur dépasse 894 alors....
   digitalWrite(pinLed4, HIGH);  // ... on allume la led
}

else {  // si la valeur est inférieure alors...
   digitalWrite(pinLed4, LOW);   // on éteint la led
 }
}

void test_des_leds()
{
}

Tu es sûr des 10 secondes ?
A la lecture rapide de ton code(si c'est le tient), c'est plus dans les 6 secondes?
Tu as essayé d'augmenter la variable que tu utilise la temporisation entre chaque pas ?

je vais essayer rajouté une ligne DelayMs_Init1

const int LED = 10; 
const byte pinLed4 = 9;
const int DelayMs = 10;        /* 1/10E-3 =100 Hz*/
const int DelayMs_Init = 10;
const int DelayMs_Init1 = 30;//new ligne
const int Num_Half_Step= 250; /*64*8*/;
int i= 0;

const int OUT1 = 2;
const int OUT2 = 3;
const int OUT3 = 4;
const int OUT4 = 5;

const int SENS1 = 7;
const int SENS2 = 8;


void setup() {
  
 pinMode(LED, OUTPUT); //met la broche en sortie
   pinMode(pinLed4, OUTPUT);
  digitalWrite(pinLed4, LOW);

  pinMode(OUT1, OUTPUT);
  pinMode(OUT2, OUTPUT);
  pinMode(OUT3, OUTPUT);
  pinMode(OUT4, OUTPUT);

  pinMode(SENS1, OUTPUT);
  pinMode(SENS2, OUTPUT);


  digitalWrite(OUT1, LOW);
  digitalWrite(OUT2, LOW);
  digitalWrite(OUT3, LOW);
  digitalWrite(OUT4, LOW);

  digitalWrite(SENS1, LOW);
  digitalWrite(SENS2, LOW);

  delay(30000);

}

void loop() {

  // Sens 1

  digitalWrite(SENS1, HIGH);
  digitalWrite(SENS2, LOW);

  for(i=0; i<Num_Half_Step;i++)
  {
    // 1 - 0001
    digitalWrite(OUT1, HIGH);
    delay(DelayMs);

    // 3 - 0011
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 2 - 0010
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 6 - 0110
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 4 - 0100
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 12 - 1100
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 8 - 1000
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 9 - 1001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, LOW);

    delay(DelayMs_Init);
    
  }

  // Sens 2

  digitalWrite(SENS1, LOW);
  digitalWrite(SENS2, HIGH);

  for(i=5; i<Num_Half_Step;i++)//for(i=0; i<Num_Half_Step;i++)
  {

    // 9 - 1001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 8 - 1000
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 12 - 1100
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 4 - 0100
    digitalWrite(OUT4, LOW);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 6 - 0110
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 2 - 0010
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 3 - 0011
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 1 - 0001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, LOW);
    delay(DelayMs);

    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, LOW);

    delay(DelayMs_Init1);//modif
 
  }
    digitalWrite(LED,HIGH); // met la broche au niveau haut (5V) – allume la LED

delay(500); // pause de 500 millisecondes (ms)

digitalWrite(LED,LOW); // met la broche au niveau bas (0V) – éteint la LED

delay(500); // pause de 500ms

  int valeur = analogRead(A0);  //lecture de la valeur sur la pin A0

  Serial.println(valeur);  // on écrit la valeur obtenu dans le moniteur série
  delay(250);  // on attend 250ms

 if (valeur > 894) {  // si la valeur dépasse 894 alors....
   digitalWrite(pinLed4, HIGH);  // ... on allume la led
}

else {  // si la valeur est inférieure alors...
   digitalWrite(pinLed4, LOW);   // on éteint la led
 }
}

void test_des_leds()
{

Cela correspond t'il vraiment à ce que tu veux faire.
A quel endroit de ton animation veut tu ralentir le mouvement?

Personnellement, je trouve:

  • 1ère boucle for (sens 1)
    250 * 9 * 10 = 22,5 s
  • 2ème boucle for (sens 2)
    245 * 8 * 10 = 22,05 s
  • délai 0,5 + 0,5 + 0,25

Total : 44,55s

A noter, la première boucle fait 250 pas et la seconde 245 donc je doute que le moteur revienne bien à sa position de départ.

Edit: avec le seconde code on arrive à 54 s

bonjour
se que je voudrais c'est la mise en route du projecteur tournent quand il tourne
merci


const byte pinLed4 = 12;//9
const int DelayMs = 10;        /* 1/10E-3 =100 Hz*/
const int DelayMs_Init = 10;//10
//const int DelayMs_Init1 = 30;//new ligne
const int Num_Half_Step= 250; /*64*8*/;
int i= 0;

const int OUT1 = 2;
const int OUT2 = 3;
const int OUT3 = 4;
const int OUT4 = 5;

const int SENS1 = 7;
const int SENS2 = 8;



void setup() {
  

   pinMode(pinLed4, OUTPUT);
  digitalWrite(pinLed4, LOW);

  pinMode(OUT1, OUTPUT);
  pinMode(OUT2, OUTPUT);
  pinMode(OUT3, OUTPUT);
  pinMode(OUT4, OUTPUT);

  pinMode(SENS1, OUTPUT);
  pinMode(SENS2, OUTPUT);

 


  digitalWrite(OUT1, LOW);
  digitalWrite(OUT2, LOW);
  digitalWrite(OUT3, LOW);
  digitalWrite(OUT4, LOW);

  digitalWrite(SENS1, LOW);
  digitalWrite(SENS2, LOW);

  delay(3000);

}

void loop() {

  // Sens 1

  digitalWrite(SENS1, HIGH);
  delay(10000);//modif
  digitalWrite(SENS2, LOW);
  delay(100000);//modif


  for(i=0; i<Num_Half_Step;i++)
  {
    // 1 - 0001
    digitalWrite(OUT1, HIGH);
    delay(DelayMs);

    // 3 - 0011
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 2 - 0010
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 6 - 0110
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 4 - 0100
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 12 - 1100
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 8 - 1000
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 9 - 1001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    digitalWrite(OUT4, LOW);
   delay(DelayMs_Init);
    
  }

  // Sens 2

  digitalWrite(SENS1, LOW);
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, LOW);
  digitalWrite(SENS2, HIGH);
 

  for(i=5; i<Num_Half_Step;i++)//for(i=0; i<Num_Half_Step;i++)
  {

    // 9 - 1001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 8 - 1000
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 12 - 1100
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 4 - 0100
    digitalWrite(OUT4, LOW);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 6 - 0110
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 2 - 0010
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 3 - 0011
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 1 - 0001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, LOW);
    delay(DelayMs);

    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, LOW);

    delay(DelayMs_Init);//modif
 
  }


  int valeur = analogRead(A0);  //lecture de la valeur sur la pin A0

  Serial.println(valeur);  // on écrit la valeur obtenu dans le moniteur série
  delay(250);  // on attend 250ms

 if (valeur > 894) {  // si la valeur dépasse 894 alors....
   digitalWrite(pinLed4, HIGH);  // ... on allume la led
}

else {  // si la valeur est inférieure alors...
   digitalWrite(pinLed4, LOW);   // on éteint la led
 }
}

void test_des_leds()
{
}

Pas clair!

oui le projecteur est fixé sur l'axe d'un petit moteur pas à pas, le moteur fait un tour de 180° dans un sans puis 180° dans l'autre et puis stop un moment et recommence jusque à temps que la LDR soit éclairé quand le jour arrive

Bonjour domi2410

C'est avant recommence que tu veux les 60 secondes de pause?
Petite remarque au sujet de ta gestion du moteur pas à pas, tu aurai nettement intérêt à utiliser une bibliothèque pour ce faire, comme Stepper.h, ça simplifierai grandement ton code.

Cordialement
jpbbricole

j'ai résolut la pose maintenant je voudrai un signal positif via l'arduino uno pour actionné un module relais qui va alimenté le projecteur uniquement quant le moteur tourne
j'ai essayé plusieurs option sans résultat

Bonjour domi2410

Comment, c'est intéressant :wink:

C'est à dire, au moment où la cellule est suffisamment insolée et qu'elle commande le moteur, ce qui reviendrai à dire que ton relais est commandé, comme le moteur, par la cellule?

Lesquelles?

Cordialement
jpbbricole

option en déclarent une sortie avec une option delay mais sa parasite l’ensemble du programme
il y a une option pin 8 qui a la fonction sens 2 mais j'ai que l'option retour

Bonjour domi2410

Pas très bien compris :woozy_face:
Est-ce que ta lumière fonctionne pendant que le moteur tourne?
Si non, mets la dernière version de ton programme, en ligne.

Cordialement
jpbbricole

la lumière ne doit fonctionné que moteur tournant

Bonsoir domi2410

Dans ton programme du poste #6, c'est le seuil du potentiomètre qui fait changer la pin pinLed4, en supposant que c'est celle-ci qui commande la LED, il te suffit de mettre un:
digitalWrite(pinLed4, HIGH);
au début de l'aller du moteur et un:
digitalWrite(pinLed4, LOW);
à la fin du retour.

Avec ça, le seuil du potentiomètre te sert à mettre en marche et à arrêter le moteur.

Le mieux est que tu mettes la dernière version de ton programme en ligne.

Cordialement
jpbbricole

mon programme initiale il fonctionne sans l'asservissement du projecteur par l’action du moteur
j'envisage installé deux contacteur c'est dommage


const byte pinLed4 = 12;//9
const int DelayMs = 10;        /* 1/10E-3 =100 Hz*/
const int DelayMs_Init = 10;//10
const int Num_Half_Step= 250; /*64*8*/;
int i= 0;

const int OUT1 = 2;
const int OUT2 = 3;
const int OUT3 = 4;
const int OUT4 = 5;

const int SENS1 = 7;
const int SENS2 = 8;



void setup() {
  
 Serial.begin(9600);  
   pinMode(pinLed4, OUTPUT);
  digitalWrite(pinLed4, LOW);

  pinMode(OUT1, OUTPUT);
  pinMode(OUT2, OUTPUT);
  pinMode(OUT3, OUTPUT);
  pinMode(OUT4, OUTPUT);

  pinMode(SENS1, OUTPUT);
  pinMode(SENS2, OUTPUT);

 


  digitalWrite(OUT1, LOW);
  digitalWrite(OUT2, LOW);
  digitalWrite(OUT3, LOW);
  digitalWrite(OUT4, LOW);

  digitalWrite(SENS1, LOW);
  digitalWrite(SENS2, LOW);

  delay(3000);

}

void loop() {

  // Sens 1

  digitalWrite(SENS1, HIGH);
  delay(10000);//modif
  digitalWrite(SENS2, LOW);
  delay(100000);//modif


  for(i=0; i<Num_Half_Step;i++)
  {
    // 1 - 0001
    digitalWrite(OUT1, HIGH);
    delay(DelayMs);

    // 3 - 0011
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 2 - 0010
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 6 - 0110
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 4 - 0100
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 12 - 1100
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 8 - 1000
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 9 - 1001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    digitalWrite(OUT4, LOW);
   delay(DelayMs_Init);
    
  }

  // Sens 2

  digitalWrite(SENS1, LOW);
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, LOW);
  digitalWrite(SENS2, HIGH);
 

  for(i=5; i<Num_Half_Step;i++)//for(i=0; i<Num_Half_Step;i++)
  {

    // 9 - 1001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 8 - 1000
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 12 - 1100
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT4, HIGH);
    delay(DelayMs);

    // 4 - 0100
    digitalWrite(OUT4, LOW);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 6 - 0110
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT3, HIGH);
    delay(DelayMs);

    // 2 - 0010
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 3 - 0011
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, HIGH);
    delay(DelayMs);

    // 1 - 0001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, LOW);
    delay(DelayMs);

    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, LOW);

    delay(DelayMs_Init);
 
  }


  int valeur = analogRead(A0);  //lecture de la valeur sur la pin A0

  Serial.println(valeur);  // on écrit la valeur obtenu dans le moniteur série
  delay(250);  // on attend 250ms

 if (valeur > 200) {  // si la valeur dépasse 894 alors....
   digitalWrite(pinLed4, HIGH);  // ... on allume la led
}

else {  // si la valeur est inférieure alors...
   digitalWrite(pinLed4, LOW);   // on éteint la led
 }
}

void test_des_leds()
{
}

j'oublier pinLed4 =12 actionne un relais qui alimente le module pas à pas

Bonsoir domi2410

Pourquoi un relais pour alimenter le moteur?
Quelle pin de l'Arduino pour commander la lumière?

As-tu regardé ça?

Cordialement
jpbbricole

Il faut vraiment que tu essayes d'être plus clair parce qu'on a quand même du mal à comprendre ce que tu veux.

  • quelles sont les entrées
  • quelles sont les sorties
  • quel comportement tu veux. Parce que tu parles d'arrêter le moteur lorsque la LDR voit de la lumière mais actuellement, ton code fait tourner le moteur en permanence (sauf bien sûr pendant la pause de 1mn40)

voila mon code c'est très académique il fonctionne comme je veux avec rajout en sorti de pin 10 (out10) de R et C de 330µf via RL commande allumage projecteur
merci

const byte pinLed4 = 12;//9
const int DelayMs = 10;        /* 1/10E-3 =100 Hz*/
const int DelayMs_Init = 10;//10
const int Num_Half_Step= 250; /*64*8*/;
int i= 0;

const int OUT1 = 2;
const int OUT2 = 3;
const int OUT3 = 4;
const int OUT4 = 5;

const int OUT10 = 10;//mod

const int SENS1 = 7;
const int SENS2 = 8;



void setup() {
  
 Serial.begin(9600);  
   pinMode(pinLed4, OUTPUT);
  digitalWrite(pinLed4, LOW);

  pinMode(OUT1, OUTPUT);
  pinMode(OUT2, OUTPUT);
  pinMode(OUT3, OUTPUT);
  pinMode(OUT4, OUTPUT);
  
  pinMode(OUT10, OUTPUT);//mod
  
  pinMode(SENS1, OUTPUT);
  pinMode(SENS2, OUTPUT);

 


  digitalWrite(OUT1, LOW);
  digitalWrite(OUT2, LOW);
  digitalWrite(OUT3, LOW);
  digitalWrite(OUT4, LOW);
  digitalWrite(OUT10, LOW);//mod
  digitalWrite(SENS1, LOW);
  digitalWrite(SENS2, LOW);

  delay(3000);

}

void loop() {

  // Sens 1

  digitalWrite(SENS1, HIGH);
  delay(10000);//modif
  digitalWrite(SENS2, LOW);
  delay(100000);//modif


  for(i=0; i<Num_Half_Step;i++)
  {
    // 1 - 0001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 3 - 0011
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 2 - 0010
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 6 - 0110
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 4 - 0100
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 12 - 1100
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT4, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 8 - 1000
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 9 - 1001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT4, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    digitalWrite(OUT4, LOW);
    digitalWrite(OUT10, HIGH);
   delay(DelayMs_Init);
    
  }

  // Sens 2

  digitalWrite(SENS1, LOW);
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, LOW);
  digitalWrite(SENS2, HIGH);
 

  for(i=5; i<Num_Half_Step;i++)//for(i=0; i<Num_Half_Step;i++)
  {

    // 9 - 1001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT4, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 8 - 1000
    digitalWrite(OUT1, LOW);
    digitalWrite(OUT4, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 12 - 1100
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT4, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 4 - 0100
    digitalWrite(OUT4, LOW);
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 6 - 0110
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT3, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 2 - 0010
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 3 - 0011
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, HIGH);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    // 1 - 0001
    digitalWrite(OUT1, HIGH);
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT10, HIGH);
    delay(DelayMs);

    digitalWrite(OUT1, LOW);
    digitalWrite(OUT2, LOW);
    digitalWrite(OUT3, LOW);
    digitalWrite(OUT4, LOW);
    digitalWrite(OUT10, LOW);

    delay(DelayMs_Init);
 
  }


  int valeur = analogRead(A0);  //lecture de la valeur sur la pin A0

  Serial.println(valeur);  // on écrit la valeur obtenu dans le moniteur série
  delay(250);  // on attend 250ms

 if (valeur > 200) {  // si la valeur dépasse 894 alors....
   digitalWrite(pinLed4, HIGH);  // ... on allume la led
}

else {  // si la valeur est inférieure alors...
   digitalWrite(pinLed4, LOW);   // on éteint la led
 }
}

void test_des_leds()
{
}