Bonjour les amis,
je viens vers vous car je n'arrive pas a faire une simulation sur proteus et j'ai un doute que le code qui ne fonctionne pas.
je souhaite utiliser un 4 Boutons (en realité ce sont des switch magnetique mais pour le test j'opte pour les boutons) pour chaque bouton j'ai 4 fonctionnements d'un moteur soit 5, 10, 20 ou 30seconds.
int LED5 = 3;
int LED10 = 4;
int LED20 = 5;
int LED30 = 6;
int REED5 = 7;
int REED10 = 10;
int REED20 = 11;
int REED30 = 12;
int RelaisM1 = 13;
int RelaisM2 = 9;
unsigned long StartTime;
void setup() {
// put your setup code here, to run once:
pinMode(LED5, OUTPUT);
pinMode(LED10, OUTPUT);
pinMode(LED20, OUTPUT);
pinMode(LED30, OUTPUT);
pinMode(RelaisM1, OUTPUT);
pinMode(RelaisM2, OUTPUT);
analogWrite(LED5, HIGH);
analogWrite(LED10, HIGH);
analogWrite(LED20, HIGH);
analogWrite(LED30, HIGH);
delay(500);
analogWrite(LED5, LOW);
analogWrite(LED10, LOW);
analogWrite(LED20, LOW);
analogWrite(LED30, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
if (digitalRead(REED5) == HIGH){
analogWrite(LED5, HIGH);
analogWrite(LED10, LOW);
analogWrite(LED20, LOW);
analogWrite(LED30, LOW);
minutes5();
}
if (digitalRead(REED10) == HIGH){
analogWrite(LED5, LOW);
analogWrite(LED10, HIGH);
analogWrite(LED20, LOW);
analogWrite(LED30, LOW);
minutes10();
}
if (digitalRead(REED20) == HIGH){
analogWrite(LED5, LOW);
analogWrite(LED10, LOW);
analogWrite(LED20, HIGH);
analogWrite(LED30, LOW);
minutes20();
}
if (digitalRead(REED30) == HIGH){
analogWrite(LED5, LOW);
analogWrite(LED10, LOW);
analogWrite(LED20, LOW);
analogWrite(LED30, HIGH);
minutes30();
}
}
void minutes5(){
digitalWrite(RelaisM1, HIGH);
StartTime = millis();
if (millis() - StartTime >= 5000){
digitalWrite(RelaisM1, LOW);
}
}
void minutes10(){
digitalWrite(RelaisM1, HIGH);
StartTime = millis();
if (millis() - StartTime >= 10000){
digitalWrite(RelaisM1, LOW);
}
}
void minutes20(){
digitalWrite(RelaisM1, HIGH);
StartTime = millis();
if (millis() - StartTime >= 20000){
digitalWrite(RelaisM1, LOW);
}
}
void minutes30(){
digitalWrite(RelaisM1, HIGH);
StartTime = millis();
if (millis() - StartTime >= 30000){
digitalWrite(RelaisM1, LOW);
}
}
Schéma du circuits proteus: