Bonjour,
J'ai suivi les conseils de PEPE, et ai repris l'ensemble de ce que je voulais faire
Cela fonctionne comme je le souhaite à un point près.
Pourquoi mon moteur fait une pose de: 1/2 à 1 seconde environ entre chaque boucle, alors que je ne relâche pas le bouton
/*
* Bouton_rouge maintenu appuyé
* le moteur tourne en sens anti horaire par (pas de 10)
* la led rouge clignote
* quand arrive sur le fin_1 stoppe le moteur
* allume la led_verte
* bouton_noir maintenu appuyé
* le moteur tourne en sens horaire par (pas de 10)
* la led rouge clignote
* quand arrive sur le fin_2 stoppe le moteur
* allume la led_rouge
*/
int led_rouge = 13; // pin 13 led rouge
int led_verte = 12; // pin 12 led verte
int fin_1 =42;
int fin_2 =44;
int bouton_noir=9;
int bouton_rouge=8;
int etat_bouton_noir;
int etat_bouton_rouge;
int etat_fin_1;
int etat_fin_2;
#include <Stepper.h>
//pour un moteur de 200 pas par tour et brancher sur les broches 2, 3, 4, 5
Stepper moteur(200, 5, 3, 4, 2);
void setup() {
pinMode(led_rouge, OUTPUT); // pin en sortie
pinMode(led_verte, OUTPUT); // pin en sortie
pinMode(fin_1, INPUT);
pinMode(fin_2, INPUT);
pinMode (bouton_noir,INPUT);
pinMode (bouton_rouge,INPUT);
moteur.setSpeed(16); // Vitesse 30 tours par minute
}
void loop() {
boolean etat_fin_1 = digitalRead(fin_1); //lecture du contact fin de course 1
boolean etat_fin_2 = digitalRead(fin_2); //lecture du contact fin de course 2
boolean etat_bouton_noir = digitalRead(bouton_noir);
boolean etat_bouton_rouge = digitalRead(bouton_rouge);
if ((digitalRead(fin_1)==HIGH)&&
digitalRead(bouton_rouge)==HIGH)
{
moteur.step(10);
}
if (digitalRead(fin_1)==LOW)
{
digitalWrite(led_verte, HIGH);
digitalWrite(led_rouge, LOW);
}
if
((digitalRead(fin_2)==HIGH)&&
digitalRead(bouton_noir)==HIGH)
{
moteur.step(-10);
}
if (digitalRead(fin_2)==LOW)
{
digitalWrite(led_verte, LOW);
digitalWrite(led_rouge, HIGH);
}
else if ((digitalRead(fin_1)==HIGH)&&
digitalRead(fin_2)==HIGH)
{
digitalWrite(led_rouge,HIGH);
delay(500);
digitalWrite(led_rouge,LOW);
delay(500);
}
}
Joël