🚸 درس 41: چراغ عابر پیاده

اولین «ماشین حالت» — الگویی که هر دستگاه هوشمندی از آن ساخته شده.

سطح: متوسط · زمان: حدود 15 دقیقه · مفاهیم: ماشین حالت، millis، دکمه

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

  1. مشکل delay در یک دستگاه واقعی
  2. قدم ۱ — ماشین حالت یعنی چه؟
  3. قدم ۲ — کد بدون هیچ delay
  4. چالش: چراغ انتظار

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

const int red = 13, yellow = 12, green = 11, button = 2;

int state = 0;                 // 0 سبز، 1 زرد، 2 قرمز
unsigned long changed = 0;
bool requested = false;

void setLights() {
  digitalWrite(green,  state == 0);
  digitalWrite(yellow, state == 1);
  digitalWrite(red,    state == 2);
}

void setup() {
  pinMode(red, OUTPUT);
  pinMode(yellow, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(button, INPUT_PULLUP);
  changed = millis();
  setLights();
  Serial.begin(9600);
}

void loop() {
  // همیشه گوش می‌دهیم — هیچ delay ای جلویش را نمی‌گیرد
  if (digitalRead(button) == LOW) {
    requested = true;
  }

  unsigned long now = millis();

  if (state == 0 && requested && now - changed > 2000) {
    state = 1; changed = now; setLights();
    Serial.println("zard");
  } else if (state == 1 && now - changed > 1500) {
    state = 2; changed = now; setLights();
    Serial.println("ghermez - obour kon");
  } else if (state == 2 && now - changed > 5000) {
    state = 0; changed = now; requested = false; setLights();
    Serial.println("sabz");
  }
}

چرا این درس؟

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

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

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

🌤️

درس 40: پروژه‌ی سطح ۲: ایستگاه هواشناسی

🤹

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