🚸 درس 41: چراغ عابر پیاده
اولین «ماشین حالت» — الگویی که هر دستگاه هوشمندی از آن ساخته شده.
سطح: متوسط · زمان: حدود 15 دقیقه · مفاهیم: ماشین حالت، millis، دکمه
قدمهای این درس
- مشکل delay در یک دستگاه واقعی
- قدم ۱ — ماشین حالت یعنی چه؟
- قدم ۲ — کد بدون هیچ delay
- چالش: چراغ انتظار
نمونهای از کد این درس
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");
}
}
چرا این درس؟
دورهی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیهساز انجام میدهی — مدار واقعی میچینی، کد واقعی اجرا میکنی و نتیجه را همان لحظه میبینی. این درس روی درسهای قبلی ساخته شده، پس اگر تازه شروع کردهای از درس ۱ بیا!
این درس را رایگان در شبیهساز شروع کن 🎓