Bonjour
J'ai un projet de motorisation d'un projecteur avec un moteur pas à pas qui tourne dans un sens puis revient en sont point de départ, le système se déclenche dans l'obscurité avec une LDR mon souhait serait d'avoir une temporisation de 60 secondes plus importante que les 10 secondes initiale
Si vous pouvez m'aider merci
const int LED = 10;
const byte pinLed4 = 9;
const int DelayMs = 10; /* 1/10E-3 =100 Hz*/
const int DelayMs_Init = 10;
const int Num_Half_Step= 250; /*64*8*/;
int i= 0;
const int OUT1 = 2;
const int OUT2 = 3;
const int OUT3 = 4;
const int OUT4 = 5;
const int SENS1 = 7;
const int SENS2 = 8;
void setup() {
pinMode(LED, OUTPUT); //met la broche en sortie
pinMode(pinLed4, OUTPUT);
digitalWrite(pinLed4, LOW);
pinMode(OUT1, OUTPUT);
pinMode(OUT2, OUTPUT);
pinMode(OUT3, OUTPUT);
pinMode(OUT4, OUTPUT);
pinMode(SENS1, OUTPUT);
pinMode(SENS2, OUTPUT);
digitalWrite(OUT1, LOW);
digitalWrite(OUT2, LOW);
digitalWrite(OUT3, LOW);
digitalWrite(OUT4, LOW);
digitalWrite(SENS1, LOW);
digitalWrite(SENS2, LOW);
delay(30000);
}
void loop() {
// Sens 1
digitalWrite(SENS1, HIGH);
digitalWrite(SENS2, LOW);
for(i=0; i<Num_Half_Step;i++)
{
// 1 - 0001
digitalWrite(OUT1, HIGH);
delay(DelayMs);
// 3 - 0011
digitalWrite(OUT1, HIGH);
digitalWrite(OUT2, HIGH);
delay(DelayMs);
// 2 - 0010
digitalWrite(OUT1, LOW);
digitalWrite(OUT2, HIGH);
delay(DelayMs);
// 6 - 0110
digitalWrite(OUT2, HIGH);
digitalWrite(OUT3, HIGH);
delay(DelayMs);
// 4 - 0100
digitalWrite(OUT2, LOW);
digitalWrite(OUT3, HIGH);
delay(DelayMs);
// 12 - 1100
digitalWrite(OUT3, HIGH);
digitalWrite(OUT4, HIGH);
delay(DelayMs);
// 8 - 1000
digitalWrite(OUT3, LOW);
digitalWrite(OUT4, HIGH);
delay(DelayMs);
// 9 - 1001
digitalWrite(OUT1, HIGH);
digitalWrite(OUT4, HIGH);
delay(DelayMs);
digitalWrite(OUT1, LOW);
digitalWrite(OUT2, LOW);
digitalWrite(OUT3, LOW);
digitalWrite(OUT4, LOW);
delay(DelayMs_Init);
}
// Sens 2
digitalWrite(SENS1, LOW);
digitalWrite(SENS2, HIGH);
for(i=5; i<Num_Half_Step;i++)//for(i=0; i<Num_Half_Step;i++)
{
// 9 - 1001
digitalWrite(OUT1, HIGH);
digitalWrite(OUT4, HIGH);
delay(DelayMs);
// 8 - 1000
digitalWrite(OUT1, LOW);
digitalWrite(OUT4, HIGH);
delay(DelayMs);
// 12 - 1100
digitalWrite(OUT3, HIGH);
digitalWrite(OUT4, HIGH);
delay(DelayMs);
// 4 - 0100
digitalWrite(OUT4, LOW);
digitalWrite(OUT3, HIGH);
delay(DelayMs);
// 6 - 0110
digitalWrite(OUT2, HIGH);
digitalWrite(OUT3, HIGH);
delay(DelayMs);
// 2 - 0010
digitalWrite(OUT3, LOW);
digitalWrite(OUT2, HIGH);
delay(DelayMs);
// 3 - 0011
digitalWrite(OUT1, HIGH);
digitalWrite(OUT2, HIGH);
delay(DelayMs);
// 1 - 0001
digitalWrite(OUT1, HIGH);
digitalWrite(OUT2, LOW);
delay(DelayMs);
digitalWrite(OUT1, LOW);
digitalWrite(OUT2, LOW);
digitalWrite(OUT3, LOW);
digitalWrite(OUT4, LOW);
delay(DelayMs_Init);
}
digitalWrite(LED,HIGH); // met la broche au niveau haut (5V) – allume la LED
delay(500); // pause de 500 millisecondes (ms)
digitalWrite(LED,LOW); // met la broche au niveau bas (0V) – éteint la LED
delay(500); // pause de 500ms
int valeur = analogRead(A0); //lecture de la valeur sur la pin A0
Serial.println(valeur); // on écrit la valeur obtenu dans le moniteur série
delay(250); // on attend 250ms
if (valeur > 894) { // si la valeur dépasse 894 alors....
digitalWrite(pinLed4, HIGH); // ... on allume la led
}
else { // si la valeur est inférieure alors...
digitalWrite(pinLed4, LOW); // on éteint la led
}
}
void test_des_leds()
{
}