j'ai oublié ton prg
const byte pinLumier = 4;
const byte pinSon = 6;
const byte pinVentouse = 8;
boolean ouverturePorte;
const byte pinAction = 10;
const byte pinBouton = 11;//init si ==high donc cablé a l'inverse de pinAction
int val = 0;
int val1 = 0;
void setup()
{
// état des ports
pinMode(pinLumier, OUTPUT);
pinMode(pinSon, OUTPUT);
pinMode(pinVentouse, OUTPUT);
pinMode(pinAction, INPUT_PULLUP);// fil sur GND pour ouvrir (validé par contact avec GND)
pinMode(pinBouton, INPUT);//il manquait cette déclaration (validé par contact avec VCC)
//mise à zéro
digitalWrite(pinSon, LOW);
digitalWrite(pinLumier, LOW);
digitalWrite(pinVentouse, LOW);
ouverturePorte = true;
}
void loop()
{
val = digitalRead(pinAction);// 10 inputpullup
val1 = digitalRead(pinBouton);// 11 init input
delay(200);//on laisse le temps aux rebonds de disparaitre
if (val == LOW || val1 == HIGH)
{
if (ouverturePorte)//le flag ne sera true qu'une seule fois
{
digitalWrite(pinSon, HIGH);
delay(5000);
digitalWrite(pinVentouse, HIGH);
delay (2500);
digitalWrite(pinLumier, HIGH);
delay(30000);
digitalWrite(pinSon, LOW);
digitalWrite(pinLumier, LOW);
digitalWrite(pinVentouse, LOW);
{//accolade inutile ou mal placée
ouverturePorte = false;//ici, tu interdit à la porte de bouger une deuxième fois
}//accolade inutile ou mal placée
}
}
}