⚡ درس 43: وقفه: گوش‌به‌زنگ همیشگی

وقتی هیچ‌وقت نباید یک رویداد را از دست بدهی.

سطح: پیشرفته · زمان: حدود 13 دقیقه · مفاهیم: attachInterrupt، volatile، ISR

قدم‌های این درس

  1. وقفه مثل زنگ در است
  2. قدم ۱ — فقط پایه‌های ۲ و ۳
  3. قدم ۲ — volatile و قوانین ISR
  4. چالش: کِی واقعاً وقفه لازم است؟

نمونه‌ای از کد این درس

const int button = 2, led = 13;
volatile int count = 0;          // volatile چون در ISR عوض می‌شود
volatile bool changed = false;

void onPress() {                 // ISR — کوتاه و ساده
  count++;
  changed = true;
}

void setup() {
  pinMode(button, INPUT_PULLUP);
  pinMode(led, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(button), onPress, FALLING);
  Serial.begin(9600);
}

void loop() {
  // کار سنگین اینجاست، نه در ISR
  digitalWrite(led, HIGH);
  delay(400);
  digitalWrite(led, LOW);
  delay(400);

  if (changed) {
    changed = false;
    Serial.print("shomare:");
    Serial.println(count);
  }
}

چرا این درس؟

دوره‌ی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیه‌ساز انجام می‌دهی — مدار واقعی می‌چینی، کد واقعی اجرا می‌کنی و نتیجه را همان لحظه می‌بینی. این درس روی درس‌های قبلی ساخته شده، پس اگر تازه شروع کرده‌ای از درس ۱ بیا!

این درس را رایگان در شبیه‌ساز شروع کن 🎓

درس‌های دیگر دوره

🤹

درس 42: چند کار هم‌زمان

🚗

درس 44: سنسور پارک ماشین