Но по какой-то причине, когда я слишком сильно выключаю штифт
включение и выключение. Я не понимаю, почему я застрял в этой петле.
Как я могу сбежать от этого?
Цикл не прерывается, потому что ввод в void detresse(int valeurPin)
не изменится. То есть, когда он вызывается, состояние переключателя не влияет на эту функцию, и он будет бесконечно работать в цикле while. Что вы можете сделать, так это изменить detresse
так:
void detresse(void) {
digitalWrite (2, HIGH) ;
digitalWrite (3, HIGH) ;
digitalWrite (4, HIGH) ;
digitalWrite (5, HIGH) ;
digitalWrite (6, HIGH) ;
digitalWrite (7, HIGH) ;
delay (500) ;
digitalWrite (2, LOW) ;
digitalWrite (3, LOW) ;
digitalWrite (4, LOW) ;
digitalWrite (5, LOW) ;
digitalWrite (6, LOW) ;
digitalWrite (7, LOW) ;
delay (500) ;
}
Кроме того, вы вызываете эту функцию независимо от состояния коммутатора, а это не то, что вам нужно, потому что последовательность освещения будет срабатывать независимо от того, что вы делаете с коммутатором. Поскольку для коммутатора может быть только два состояния, вы должны вызывать detresse
только для одного или другого, но не для обоих. Предполагая, что вы хотите позитивную логику, loop
будет выглядеть так:
void loop () {
s4state = digitalRead(11); //Lit pin 11 switch
if (s4state == 1) { // wargning/detrese
detresse();
}
}