Bonsoir à tous,
Je débute avec Arduino, je suis un jeune "d'autre fois", j'ai acheté un kit débutant, je lis, je fouille, bref j'apprends.
J'ai fait ce code en m'aidant sur ce forum
Je souhaiterai avoir une aide, ou plutôt un axe pour chercher ma solution
Mon projet:
Mise sous tension Arduino,
Appui sur BP1 le moteur pas à pas fait 180° à droite (déroule une ficelle de son tambour))
Appui sur BP2 le moteur fait 180° dans l'autre sens (enroule la ficelle sur son tambour)
Mon croquis fonctionne.
Mon problème est le suivant a la mise sous tension, je veux interdire à BP2 d'être actif pour éviter toute fausse manœuvre, (enroulement sur elle même de la ficelle ) ' seul Bp1 doit permettre une action de déroulement, et ensuite Bp2 deviendrait "fonctionnel" pour enrouler la ficelle.
J'ai "bricolé" le code également avec un seul poussoir avec fonction boolean, if, mais je suis à l'arrêt.
Mon manque d'expérience est criant, je coince
. Une fonction du genre si pas d'appui sur ....interdit de.. suis je sur la bonne voie? si j'inspire quelqu'un je suis preneur d'une aide, en attendant merci de m'avoir lu. AL.
[code
//**************************************************************
// Commande moteur pas-à-pas
//
//
//
//**************************************************************
#include <Stepper.h> // Inclus la librairie pour les fonctions stepper
#define STEPS 400 //nombre de pas pour 1 tour moteur
//Créer une instance de la classe stepper pour définir notre moteur
Stepper Mon_moteur(STEPS, 8, 10, 9, 11); // Sens horaire
int nb_pas = 0; //Nombre de pas de rotation demandé au moteur
// Définir les broches
const int BP1= 2; // La constante BP1 est affecté à la broche 2
const int BP2= 3; // La constante BP1 est affecté à la broche 3
const int led =4; // La constante led est affectée à la broche 4
int Etat_bouton1 = 0; // Déclaration et initialisation de la variable Etat_bouton
int Etat_bouton2 = 0; // idem au dessus
void setup()
{
pinMode(led, OUTPUT); // La broche 4 est définie comme une sortie
pinMode(BP1, INPUT); // La broche 2 est définie comme une entrée
pinMode(BP2, INPUT); // La broche 3 est définie comme une entrée
}
void loop()
{
Etat_bouton1 = digitalRead(BP1); // lecture de l'état logique BP1
Etat_bouton2 = digitalRead(BP2); // lecture de l'état logique BP2
Mon_moteur.setSpeed(40); //Vitesse de 40 réduire cette valeur pour avoir un vitesse plus lente
nb_pas = 200; // Une rotation complète avec 400 pas donc moitié
if (Etat_bouton1 == HIGH) {
motor_sh(); //Appele la fonction motor_sh '(sens horaire)
}
if (Etat_bouton2 == HIGH) {
motor_sih(); //Appel la fonction motor_sih (sens anti horaire)
}
}
//Fonction Sens horaire moteur
void motor_sh(){
digitalWrite(led, HIGH); // allume la led
Mon_moteur.step(nb_pas); // fait tourner le moteur d'un 1/2 tour
}
//Fonction Sens anti-horaire moteur
void motor_sih(){
Mon_moteur.step(-nb_pas); // fait tourner le moteuu d'un demi tour
digitalWrite(led, LOW); // Eteint la led
}
][/code]