در این درس یاد میگیرید چگونه از یک دکمهٔ فشاری بهعنوان ورودی دیجیتال استفاده کنید و مفهوم مهم Pull-up و Pull-down را درک کنید.
چرا به مقاومت Pull-up نیاز داریم؟
وقتی دکمه فشرده نشده، پایهٔ ورودی در یک وضعیت نامشخص (شناور) قرار میگیرد و ممکن است نویز آن را بهاشتباه HIGH یا LOW بخواند. با فعال کردن مقاومت داخلی Pull-up، پایه بهطور پیشفرض HIGH نگه داشته میشود و تنها زمانی که دکمه فشرده شود، LOW میشود.
from machine import Pin
from time import sleep
button = Pin(4, Pin.IN, Pin.PULL_UP)
led = Pin(2, Pin.OUT)
while True:
if button.value() == 0: # دکمه فشرده شده (چون Pull-up است)
led.on()
else:
led.off()
sleep(0.05)
در حالت Pull-up: دکمهٔ رهاشده = 1 (HIGH)، دکمهٔ فشرده = 0 (LOW). این برعکس چیزی است که خیلیها ابتدا انتظار دارند.
حذف لرزش کلید (Debounce)
دکمههای فیزیکی هنگام فشردهشدن چند میلیثانیه «میلرزند» و ممکن است چند سیگنال پشتسرهم تولید کنند. یک تأخیر کوچک (مثلاً ۲۰ تا ۵۰ میلیثانیه) بعد از تشخیص فشردن، معمولاً این مشکل را حل میکند.
from machine import Pin
from time import sleep
button = Pin(4, Pin.IN, Pin.PULL_UP)
led = Pin(2, Pin.OUT)
counter = 0
last_state = 1
while True:
state = button.value()
if state == 0 and last_state == 1:
sleep(0.03) # debounce
counter += 1
led.value(counter % 2)
print("تعداد فشردن:", counter)
last_state = state
sleep(0.01)
کارگاه عملی: برنامه را طوری تغییر دهید که با هر بار فشردن دکمه، یک پیام متفاوت در سریال چاپ شود (مثلاً با یک لیست از پیامها و شمارنده).