Bonjours ,
j’essaye de faire un programme pour animer une maquette à base de servomoteur et quand on passe devant un capteur de mouvement la maquette s’anime. J’ai réalisé le programme suivant sauf que quand je commence avec 2 void l’animation se fais 2 fois au lieu d’une fois. Je ne sais pas cela peut venir d’où merci pour vos réponses d’avance.
#include <Servo.h>
#include <Arduino.h>
#define PIR_MOTION_SENSOR 2
#define LED 4
/*! ===========================================================================================================================
// Objets et variables globales
// ===========================================================================================================================*/
// OBJETS:
Servo servo;
Servo ServoMain;
Servo ServoEB;
Servo ServoEY;
Servo ServoCoude;
Servo ServoPoigne;
//VARIABLES:
/*! ===========================================================================================================================
// fonctions
// ===========================================================================================================================*/
void setup()
{
ServoMain.attach(10);
ServoEB.attach(9);
ServoEY.attach(8);
ServoCoude.attach(11);
ServoPoigne.attach(12);
pinMode(PIR_MOTION_SENSOR, INPUT);
pinMode(LED,OUTPUT);
}
/*!============================================================================================================================*/
///Détection d'une personne
boolean PersonneDetect()
{
int sensorValue = digitalRead(PIR_MOTION_SENSOR);
if(sensorValue == HIGH)
{
return true;
}
else
{
return false;
}
}
/*!============================================================================================================================*/
void VservoMain()
{
ServoMain.write(90);
delay(10);
ServoMain.write(0);
}
/*!============================================================================================================================*/
void VservoCoude()
{
ServoCoude.write(90);
delay(10);
ServoCoude.write(0);
}
/*!============================================================================================================================*/
/*void VservoEB()
{
ServoEB.write(90);
delay(10);
ServoEB.write(0);
}
/*!============================================================================================================================*/
/*
void VservoEY()
{
ServoEY.write(90);
delay(10);
ServoEY.write(0);
}
/*!============================================================================================================================*/
/*
void VservoPoigne()
{
ServoPoigne.write(90);
delay(10);
ServoPoigne.write(0);
}
/*! ===========================================================================================================================
// programme principal
// ===========================================================================================================================*/
void loop()
{
if(PersonneDetect())
{
digitalWrite(LED, HIGH);
VservoMain();
VservoCoude();
// VservoEB();
// VservoEY();
//VservoPoigne();
}
else
{
digitalWrite(LED, LOW);
ServoMain.write(0);
// ServoPoigne.write(0);
// ServoEB.write(0);
// ServoEY.write(0);
ServoCoude.write(0);
delay(10);
}
}