Kesme kullanımı

Arkadaşlar merhaba. Arduino Uno da 3 buton kullanıcam. Projem için 2 farklı çalışma modu olacak ve 3. buton ise bunları kapatma işini yapıcak. Kapatma butonunu kesmeye atadım. program çalışırken kesme içerisine giriyor (LEd yakıyorum) ancak kesme içerisinde x değişkenine 1 değerini atamaya çalışıyorum ama nedendir bilmiyorum x in değeri değişmiyor. X in değerini değiştirip fonksiyonlara döndüğünde butona bastığımın denetlenerek fonksiyonun do-while döngüsünden çıkmasını istiyorum. Kodlar aşağıdaki gibi. Fikirlerinizi bekliyorum. Bu kapatma işlemini yapabileceğim alternatif fikirlere de açığım. reset kullanamam çünkü kullandığım motorun devir işlemini tamamlaması lazım. const int butonac = 5; const int butonuyku = 4; const int forvard = 6; const int reverse = 7; int butonacdurum; int butonuykudurum; int x; void setup() { pinMode(butonac, INPUT); pinMode(butonuyku, INPUT); pinMode(forvard, OUTPUT); pinMode(reverse, OUTPUT); attachInterrupt(0, kapa, RISING); } void loop() { x = 0; butonacdurum = digitalRead(butonac); butonuykudurum = digitalRead(butonuyku); if (butonacdurum == HIGH) { ackapa(); } else if (butonuykudurum == HIGH) { uyku(); } } void kapa() { butonacdurum = LOW; butonuykudurum = LOW; digitalWrite(led, HIGH); x = 1; } void ackapa() { digitalWrite(reverse, HIGH); delay(250); digitalWrite(reverse, LOW); delay(25); do { digitalWrite(forvard, HIGH); delay(475); digitalWrite(forvard, LOW); delay(25); digitalWrite(reverse, HIGH); delay(475); digitalWrite(reverse, LOW); delay(25); digitalWrite(led2,HIGH); } while (x == 0); digitalWrite(forvard, HIGH); delay(250); digitalWrite(forvard, LOW); delay(10); } void uyku() { do { … } while (x == 0); }