Loading
Loading
كيف تنتبه لضغطة الزر فوراً حتى لو كان الأردوينو مشغولاً بشيء آخر.
صل الزر بدبوس رقم 2 أو 3.
volatile bool state = false;
void setup() {
pinMode(13, OUTPUT);
pinMode(2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), blink, FALLING);
}
void loop() {
// الأردوينو نائم في دالة delay لا نهاية لها، لكن المقاطعة ستعمل
delay(10000);
}
void blink() {
state = !state;
digitalWrite(13, state);
}كتابة دالة طوارئ (ISR) طويلة جداً أو تحتوي على `delay()` أو `Serial.print()`. الـ ISR يجب أن يكون خاطفاً (يغير متغيراً ويخرج).