متوسط⏱ 14 دقیقه مطالعه

در این درس یاد می‌گیرید چطور چند LED را هم‌زمان یا به‌صورت متوالی (افکت چراغ روان، معروف به Knight Rider) کنترل کنید — تمرینی عالی برای کار با لیست‌ها و حلقه‌ها در میکروپایتون.

اتصال چند LED به چند پایهٔ GPIO

تعریف چند پایه با یک لیست

به‌جای تعریف تک‌تک متغیرها برای هر LED، می‌توانیم یک لیست از آبجکت‌های Pin بسازیم و با حلقه روی آن‌ها کار کنیم.

PYTHON
from machine import Pin
from time import sleep

pins = [13, 12, 14, 27, 26]
leds = [Pin(p, Pin.OUT) for p in pins]

def all_off():
    for led in leds:
        led.off()

while True:
    for led in leds:
        all_off()
        led.on()
        sleep(0.1)
    for led in reversed(leds):
        all_off()
        led.on()
        sleep(0.1)
💡 نکته

ساخت لیستی از آبجکت‌های Pin با List Comprehension (مثل «Pin(p, Pin.OUT) for p in pins») کد را بسیار تمیزتر و قابل‌توسعه‌تر می‌کند.

افزودن PWM برای افکت محوشدگی

با ترکیب این ایده با PWM (درس ۵)، می‌توانید به‌جای روشن/خاموش ناگهانی، هر LED را به‌آرامی محو و ظاهر کنید تا افکتی نرم‌تر بسازید.

شبیه‌سازی زندهٔ افکت چراغ روان با پنج LED — دقیقاً همین کد و همین پایه‌ها (GPIO13، ۱۲، ۱۴، ۲۷، ۲۶) باز کردن در Wokwi ↗
در حال بارگذاری شبیه‌ساز… (ممکن است چند ثانیه طول بکشد)

این یک شبیه‌سازی واقعی و قابل اجراست؛ روی دکمه پخش (▶) در Wokwi بزنید تا کد روی برد مجازی ESP32 اجرا شود. اگر جعبهٔ بالا بیش از حد سیاه/خالی ماند، صفحه را رفرش کنید یا از دکمهٔ «باز کردن در Wokwi» بالا استفاده کنید.

🛠️ کارگاه عملی

کارگاه عملی: افکت «چراغ روان» بالا را طوری تغییر دهید که سرعت آن به یک پتانسیومتر (با ADC، درس ۶) وابسته باشد؛ هرچه پتانسیومتر بیشتر بچرخد، سرعت چراغ‌ها بیشتر شود.

❓ برای ساخت سریع لیستی از آبجکت‌های Pin از کدام روش استفاده شد؟
طراحی و توسعه: امین شیخ نجدیglcd.ir | نسخهٔ افزونه: 1.21.0