bonjour tout le monde.
je m'appel Jérôme. je suis tout nouveau dans le monde Arduino et en codage C.
je réussi t'en bien que mal à créer un petit programme en pompant sur le net.
j'aimerais contrôler un moteur pas à pas avec une photorésistances. j'ai mis des seuils. mon moteur tourne sois dans un sens ou dans l'autre. mon problème c'est que j'aimerais qu'il face un tour puis s’arrête en attendant de franchir le seuil suivent.
pouvez vous m'aider?
#include <Stepper.h> // librairie pour moteurs pas à pas
const int NombrePas= 2048;
const int Pas_1=11;
const int Pas_2=10;
const int Pas_3=9;
const int Pas_4=8;
Stepper stepper(NombrePas, Pas_1, Pas_3, Pas_2, Pas_4);
void setup() {
Serial.begin(9600);
stepper.setSpeed(14);
pinMode(13,OUTPUT);
pinMode(Pas_1, OUTPUT);
pinMode(Pas_2, OUTPUT);
pinMode(Pas_3, OUTPUT);
pinMode(Pas_4, OUTPUT);
}
void loop()
{
int ValeurMesure = analogRead(A0);
Serial.println(ValeurMesure);
delay(1000);
if (ValeurMesure<250)
{
digitalWrite(13,LOW);
stepper.step(NombrePas);
}
else if (ValeurMesure>251)
{
digitalWrite(13,HIGH);
stepper.step(-NombrePas); // un pas en sens inverce
}
delay(1000);
}
Je pense qu'il suffit de trouver la bonne valeur pour la variable NombrePas, afin qu'il fasse précisément un tour. Fais des tests...
Merci et du coup j'ai complètement modifier le programme et heureusement ça marche.
//le but de ce programme est de faire tourner un moteur xNombre de tour et de l'arreter completement sous detection de luminosité
#include <Stepper.h> // librairie pour moteurs pas à pas
boolean porte_ouverte = false;
const int NombrePas= 2048;//Nombre de pas pour un moteur 28BYJ48
const int Pas_1=11;
const int Pas_2=10;
const int Pas_3=9;
const int Pas_4=8;
int SB = 400;// Seuil Bas de la luminosité
int SH = 500 ;//Seuil Haur de la luminosité
Stepper stepper(NombrePas, Pas_1, Pas_3, Pas_2, Pas_4);
void setup() {
Serial.begin(9600);
stepper.setSpeed(7);// Vitesse de moteur
pinMode(13,OUTPUT);// Led qui indique le jour ( ça sert a rien. Mais en phase de test c'est plutot pratique
pinMode(Pas_1, OUTPUT);
pinMode(Pas_2, OUTPUT);
pinMode(Pas_3, OUTPUT);
pinMode(Pas_4, OUTPUT);
}
void loop()
{
int luminosite = analogRead(A1);// capteur photoresistance
Serial.print("luminosite=");
Serial.println(luminosite);
delay(1000);
//
if (porte_ouverte == false&&luminosite>SH)//Si la porte est ouvert et que la luminosité est inferieur au seuil bas. Fermeture de la porte
{
tournehoraire();//je demande a lancer le la boucle void qui determine le sens du moteur
porte_ouverte=true;// Une fois l'action fait. J'indique que la porte est fermé
}
//
if (porte_ouverte == true&&luminosite<SB)////Si la porte est fermé et que la luminosité est superieur au seuil haut. J'ouvre la porte
{
tournetrigo();//je demande a lancer le la boucle void qui determine le sens du moteur
porte_ouverte=false;// Une fois l'action fait. J'indique que la porte est ouvert
}
}
void tournehoraire()
{
digitalWrite(13,HIGH);
stepper.step(NombrePas);
digitalWrite(Pas_1, LOW);// je demande l'extinction du moteur.
digitalWrite(Pas_2, LOW);// je demande l'extinction du moteur.
digitalWrite(Pas_3, LOW);// je demande l'extinction du moteur.
digitalWrite(Pas_4, LOW);// je demande l'extinction du moteur.
}
void tournetrigo()
{
digitalWrite(13,LOW);
stepper.step(2-NombrePas);
digitalWrite(Pas_1, LOW);// je demande l'extinction du moteur.
digitalWrite(Pas_2, LOW);// je demande l'extinction du moteur.
digitalWrite(Pas_3, LOW);// je demande l'extinction du moteur.
digitalWrite(Pas_4, LOW);// je demande l'extinction du moteur.
}