Bonjour
j'ai suivi l'excellent site locoduino pour gérer la vitesse de déplacement du palonier de deux servos moteurs et jusque la tout va bien
Le souci est que quand je les incorpore dans mon code .
Le programme s'exécute bien dans le moniteur série mais les servos moteurs ne bougent pas.
Je travaille en simulation sous autodesk Circuits en web interactif.
voici le code
#include <Servo.h>
#include <Stepper.h>
//pour un moteur de 200 pas par tour et brancher sur les broches 4, 6, 5, 7
Stepper moteur(200, 4, 6, 5, 7);
Servo Castor;
int vitesse;
int angle;
const int angleMin = 02;
const int angleMax = 20;
/*---------------------------------------------*/
Servo Lapin;
int vitesseLapin;
int angleLapin;
const int angleMinLapin = 02;
const int angleMaxLapin = 70;
/*---------------------------------------------*/
Servo Mouton;
Servo BonhommeDeNeige;
Servo chambreGa;
Servo chambreFille;
Servo salle;
void servoCastor(void); //castor scie aller retour
void moteurpap(void);
void moteurpapRetour(void);
void servochambreGa(void); // aller du servo moteur
void servochambreGaR(void); // R pour retour du servo moteur
void servoChambreFille(void); // aller du servo moteur
void servoChambreFilleR(void); // R pour retour du servo moteur
void servoSalle(void); // aller du servo moteur
void servoSalleR(void); // R pour retour du servo moteur
void ledGa(void); // allumer la led chambre ga
void ledFille(void); // allumer la led chambre fille
void ledFilleE(void); // eteindre la led chambre fille
void ledGaE(void); // eteindre la led chambre g
void ledSalle(void); // allumer la led de la salle
void ledSalleE(void); // eteindre la led de la salle
void setup() {
{
Serial.begin(9600); // ouvre le port série à 9600 bauds
}
{
pinMode(8,OUTPUT); // sortie led etoile
pinMode(9,OUTPUT); // sortie led sapin
pinMode(A0,OUTPUT); //sortie led chambre garçon
pinMode(A1,OUTPUT); //sortie led chambre fille
pinMode(A2,OUTPUT); //sortie led salle
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(A0, HIGH);
digitalWrite(A1, HIGH);
digitalWrite(A2, HIGH);
}
{
Castor.attach(10); // servomoteur
angle = angleMin;
vitesse = 1;
/*---------------------------------------------*/
Lapin.attach(11); // servomoteur
angleLapin = angleMinLapin;
vitesseLapin = 1;
/*---------------------------------------------*/
Mouton.attach(13);
BonhommeDeNeige.attach(A7);
chambreGa.attach(2); // servomoteur
chambreGa.write(10); // initialise a 15 degre
chambreFille.attach(3); // servomoteur
chambreFille.write(5); // initialise a 15 degre
}
{
moteur.setSpeed(30); //30 tours par minute
//(rappel : ici le moteur fait 200 pas par tour, on fera donc 6000 pas par minute)
}
}
void loop() {
for (int servoCompteurcastor = 0; servoCompteurcastor < 8; servoCompteurcastor++)
servoCastor();
for (int moteurpapCompteur = 0; moteurpapCompteur < 1; moteurpapCompteur++)
moteurpap();
for (int servoCompteurchambreGa = 0; servoCompteurchambreGa < 1; servoCompteurchambreGa++)
servochambreGa();
for (int CompteurledGa = 0; CompteurledGa < 1; CompteurledGa++)
ledGa();
for (int servoCompteurchambreFille = 0; servoCompteurchambreFille < 1; servoCompteurchambreFille++)
servoChambreFille();
for (int CompteurledFille = 0; CompteurledFille < 1; CompteurledFille++)
ledFille();
for (int moteurpapCompteur = 0; moteurpapCompteur < 1; moteurpapCompteur++)
moteurpapRetour();
for (int CompteurledGaE = 0; CompteurledGaE < 1; CompteurledGaE++)
ledGaE();
for (int servoCompteurchambreGaR = 0; servoCompteurchambreGaR < 1; servoCompteurchambreGaR++)
servochambreGaR();
for (int CompteurledFilleE = 0; CompteurledFilleE < 1; CompteurledFilleE++)
ledFilleE();
for (int servoCompteurchambreFilleR = 0; servoCompteurchambreFilleR < 1; servoCompteurchambreFilleR++)
servoChambreFilleR();
for (int CompteurledSalle = 0; CompteurledSalle < 1; CompteurledSalle++)
ledSalle();
for (int CompteurledSalleE = 0; CompteurledSalleE < 1; CompteurledSalleE++)
ledSalleE();
}
void servoCastor(void) {
Serial.println("servo animation en marche ");
Castor.write(angle); //servomoteur castor se positionne a 80
/* calcule le nouvel angle */
angle = angle + vitesse;
if (angle > angleMax) {
/*
* le nouvel angle dépasse le maximum
* on le recale au maximum et on inverse la vitesse
*/
angle = angleMax;
vitesse = -1;
}
else if (angle < angleMin) {
/*
* le nouvel angle dépasse le minimum
* on le recale au minimum et on inverse la vitesse
*/
angle = angleMin;
vitesse = 1;
}
delay(800);
/*---------------------------------------------*/
Lapin.write(angleLapin); //servomoteur lapin1 se positionne a 80
/* calcule le nouvel angle */
angleLapin = angleLapin + vitesseLapin;
if (angleLapin > angleMaxLapin) {
/*
* le nouvel angle dépasse le maximum
* on le recale au maximum et on inverse la vitesse
*/
angleLapin = angleMaxLapin;
vitesseLapin = -1;
}
else if (angleLapin < angleMinLapin) {
/*
* le nouvel angle dépasse le minimum
* on le recale au minimum et on inverse la vitesse
*/
angleLapin = angleMinLapin;
vitesseLapin = 1;
}
delay(800);
}
void moteurpap(void) {
Serial.println("Moteur pap aller ");
moteur.step(300);
delay(3500);
}
void servochambreGa(void) {
Serial.println("servo chambreGa en marche ");
chambreGa.write(90); //servomoteur chambrega se positionne a 90 et ne bouge plus
delay(800);
}
void ledGa(void) {
Serial.println("led chambreGa allumer ");
digitalWrite(A0, LOW); // Allumer LED chambre garçon
delay(1500);
}
void servoChambreFille(void){
Serial.println("servo chambrefille en marche ");
chambreFille.write(70); //servomoteur chambrefille se positionne a 70 et ne bouge plus
delay(800);
}
void ledFille(void){
Serial.println("led chambreFille allumer ");
digitalWrite(A1, LOW); // Allumer LED chambre fille
delay(2500);
}
void moteurpapRetour(void) {
Serial.println("Moteur pap retour ");
moteur.step(-300);
delay(3500);
}
void ledFilleE(void){
Serial.println("led chambreFille etiend ");
digitalWrite(A1, HIGH); // Eteindre LED chambre fille
delay(800);
}
void ledGaE(void){
Serial.println("led chambreGa eteind ");
digitalWrite(A0, HIGH); // Etiendre LED chambre garçon
delay(800);
}
void servoChambreFilleR(void){
Serial.println("servo chambreFille retour ");
chambreFille.write(5); //servomoteur chambrefille se positionne a 90 et ne bouge plus
delay(800);
}
void servochambreGaR(void) {
Serial.println("servo chambreGa retour ");
chambreGa.write(10); //servomoteur chambrega se positionne a 90 et ne bouge plus
delay(800);
}
void ledSalle(void){
Serial.println("led salle allumer ");
digitalWrite(A2, LOW); // Allumer LED de la salle
delay(4500);
}
void ledSalleE(void){
Serial.println("led salle eteind ");
digitalWrite(A2, HIGH); // Etiendre LED de la salle
delay(800);
}
j'ai mis /---------------------------------------------/ pour plus de visibilité.
Merci pour vos réponses.