🚦 ساخت چراغ راهنمایی با آردوینو — قدم به قدم
چراغ راهنمایی بهترین پروژهی دوم است: از Blink سختتر است ولی هنوز فقط سه LED میخواهد و مفهوم ترتیب زمانی را عالی جا میاندازد.
چه لازم داری
- سه LED: قرمز، زرد، سبز
- سه مقاومت ۲۲۰ اهمی
- آردوینو و چند سیم
مدار
پایهی بلند هر LED از طریق مقاومت به یک پایهی آردوینو (مثلاً ۱۱، ۱۲، ۱۳) و پایهی کوتاهش به GND. همین.
کد
const int red = 13, yellow = 12, green = 11;
void setup() {
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
}
void only(int pin) { // فقط یکی روشن بماند
digitalWrite(red, pin == red);
digitalWrite(yellow, pin == yellow);
digitalWrite(green, pin == green);
}
void loop() {
only(red); delay(5000); // ایست
only(green); delay(5000); // حرکت
only(yellow); delay(1500); // آماده باش
}
چرا تابع only نوشتیم؟
بدون آن باید در هر مرحله سه خط digitalWrite بنویسی — ۹ خط تکراری. تابع کد را کوتاهتر و مهمتر از آن قابل اعتمادتر میکند: دیگر ممکن نیست فراموش کنی یکی را خاموش کنی.
نسخهی پیشرفته: دکمهی عابر پیاده
یک دکمه با INPUT_PULLUP اضافه کن. وقتی فشرده شد، چراغ سبز را زودتر تمام کن و به قرمز برو. برای اینکه دکمه در طول delay هم کار کند، باید سراغ millis() بروی — و این دقیقاً همان لحظهای است که میفهمی چرا millis مهم است.
اشتباهات رایج
- فراموشکردن مقاومتها — LEDها خیلی زود میسوزند.
- وصلکردن هر سه کاتد به یک مقاومت مشترک — نورشان به هم وابسته میشود.
- برعکس بستن LED — روشن نمیشود (ولی نمیسوزد).