Hi thanks for ur reply, We have done a program with a push button n 2 LED, n motor shield, Can u help me fix it?
int pinBouton;
void setup()
{
Serial.begin(9600);
pinBouton=10;
pinMode(pinBouton,INPUT);
}
void loop()
{
boolean etatBouton=digitalRead(pinBouton);
Serial.println(etatBouton);
}
// LES DECLARATIONS
int bouton = 8; // pin 8 bouton poussoir
int valeur_bouton = 0; // variable pour enregistrer l'état du bouton
int valeur_precedante_bouton = 0; // variable pour enregistrer l'ancien état du bouton
int led_rouge = 13; // pin 13 led rouge
int led_verte = 12; // pin 12 led verte
int compteur = 0; // variable du compteur
int fin_de_course_1 = 42; // pin 42 contact fin de course
#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);
boolean premiereFois = false;
boolean premiereFois2 = false;
void setup() {
pinMode(led_rouge, OUTPUT); // pin en sortie
pinMode(led_verte, OUTPUT); // pin en sortie
pinMode(bouton, INPUT); // pin en entrée
pinMode(fin_de_course_1, INPUT); // pin en entrée
moteur.setSpeed(16); // Vitesse 30 tours par minute
}
void loop() {
boolean etatfincourse_1 = digitalRead(fin_de_course_1); //lecture du contact fin de course
//UN APPUI SUR LE BOUTON ALLUME UN NOUVEL APPUI SUR LE BOUTON ETEINT
valeur_bouton = digitalRead(bouton); // interrogation du bouton poussoir, la valeur précédante est elle différente de la valeur l'actuelle?
if (valeur_precedante_bouton != valeur_bouton) {
if (valeur_bouton == HIGH) {
compteur++; // On incrémente le compteur (+1 à chaque appui)
}
}
valeur_precedante_bouton = valeur_bouton; // sauvegarder la valeur actuelle du bouton
if (etatfincourse_1 == HIGH) //si contact fermé
if (compteur % 2 == 0) // on incrémente la variable compteur à chaque boucle
// le signe %indique diviser voir tableau page 264, le résultat est soit pair (0) ou impair (1)
// traduction du code: SI(compteur pair (0) ecrire digitalWrite(led_rouge,HIGH)
{ // SINON il est donc de (1) et dans ce cas c'est l'instruction digitalWrite(led_rouge, LOW)
digitalWrite(led_rouge, HIGH);
if (!premiereFois) {
moteur.step(270); // angle de rotation
premiereFois = true; // stop le moteur après la première phase
premiereFois2 = false; // initialise pour la phase 2
}
}
else
digitalWrite(led_rouge, LOW);
if (compteur % 2 == 1) // le signe %indique diviser voir tableau page 264, le résultat est soit pair (0) ou impair (1)
// traduction du code: SI(compteur impair (1) ecrire digitalWrite(led_verte,HIGH)
// SINON il est donc de (0) et dans ce cas c'est l'instruction digitalWrite(led_verte, LOW)
{
digitalWrite(led_verte, HIGH);
if (!premiereFois2) {
moteur.step(-270); // angle de rotation
premiereFois2 = true; // stop le moteur après la deuxième phase
premiereFois = false; // initialise pour la phase 1
}
}
else
digitalWrite(led_verte, LOW);
}