🔘 دکمه فشاری (Push Button)

اسم انگلیسیPush Button
در ووکوی (Wokwi)wokwi-pushbutton
دسته🎛️ کلید، دکمه و ورودی
در شبیه‌ساز فارسیمود ساده (بدون کد) و مود آردوینو · رایگان

دکمه فشاری (Push Button) یک کلید لحظه‌ای است: تا فشارش می‌دهی وصل است و رهایش کنی قطع می‌شود. اولین ورودی هر پروژه‌ی آردوینو همین دکمه است: زنگ در، شروع بازی، شمارنده، منو. دو چیز در آن تازه‌کارها را گیج می‌کند: چهار پایه‌ای که دوبه‌دو به هم وصل‌اند، و منطق برعکس INPUT_PULLUP. هر دو را این‌جا، هم در ووکوی و هم روی بردبورد، روشن می‌کنیم.

دکمه در ووکوی (Wokwi)

شناسه‌ی قطعه wokwi-pushbutton است و با ویژگی color رنگ کلاهکش را عوض می‌کنی. حین اجرای شبیه‌سازی، با کلیک روی دکمه فشارش می‌دهی.

{
  "version": 1,
  "parts": [
    { "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
    { "type": "wokwi-pushbutton", "id": "btn1", "top": -100, "left": 160, "attrs": { "color": "green" } }
  ],
  "connections": [
    [ "btn1:1.l", "uno:2", "green", [] ],
    [ "btn1:2.l", "uno:GND.1", "black", [] ]
  ]
}
پایه در ووکویبه کجاتوضیح
1.l و 1.runo:2 (یکی‌شان کافی است)دو پایه‌ی یک طرف کلید، همیشه به هم وصل
2.l و 2.runo:GND.1 (یکی‌شان کافی است)طرف دیگر کلید؛ با فشار به طرف 1 وصل می‌شود

دکمه‌ی فشاری در تینکرکد فارسی هم، در مود ساده و مود آردوینو، رایگان است؛ پروژه‌ی دکمه و LED نقطه‌ی شروع خوبی است.

سیم‌کشی با آردوینو

دکمه‌ی چهارپایه‌ی واقعی را روی شیار وسط بردبورد بگذار. ترفند همیشه‌درست: دو پایه‌ی قطری را استفاده کن؛ دو پایه‌ای که روی قطر دکمه روبه‌روی هم‌اند هیچ‌وقت از داخل به هم وصل نیستند، پس مطمئنی از دو طرف کلید برداشته‌ای.

پایه‌ی قطعهوصل به
یک پایه‌ی دکمهپین 2 آردوینو (با INPUT_PULLUP)
پایه‌ی قطری روبه‌روGND
LED با مقاومت ۲۲۰ اهمپین 13 به GND

اگر به‌جای پول‌آپ داخلی مقاومت بیرونی دوست داری، یک مقاومت ۱۰ کیلواهم از پین ۲ به GND (پایین‌کش) بگذار و پایه‌ی دیگر دکمه را به 5V بزن؛ آن‌وقت فشرده یعنی HIGH. هر دو روش درست‌اند، فقط شرط کد باید با سیم‌کشی جور باشد. روی ESP32 و پیکو هم همین منطق برقرار است، با این فرق که تغذیه‌شان ۳٫۳ ولت است.

کد نمونه

// Toggle an LED with each press (pin 2 to GND through the button), with debounce
const int BUTTON_PIN = 2;
const int LED_PIN = 13;
const unsigned long DEBOUNCE_MS = 30;

bool ledOn = false;
int lastReading = HIGH;
int stableState = HIGH;
unsigned long lastChange = 0;

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  int reading = digitalRead(BUTTON_PIN);
  if (reading != lastReading) {
    lastChange = millis();            // contacts moved, start waiting
    lastReading = reading;
  }
  if (millis() - lastChange > DEBOUNCE_MS && reading != stableState) {
    stableState = reading;
    if (stableState == LOW) {         // a real, settled press
      ledOn = !ledOn;
      digitalWrite(LED_PIN, ledOn ? HIGH : LOW);
    }
  }
}

کد به‌جای delay با millis صبر می‌کند، پس هم‌زمان می‌تواند کارهای دیگری هم بکند. توضیح مفصل‌تر این روش در درس لرزش دکمه و debounce هست.

اشتباه‌های رایج

آموزش‌های مرتبط

سؤال‌های رایج

پایه‌های 1.l و 1.r در دکمه‌ی ووکوی یعنی چه؟

دکمه‌ی ووکوی مثل دکمه‌ی واقعی چهار پایه دارد. 1.l و 1.r دو پایه‌ی یک طرف کلیدند و از داخل همیشه به هم وصل‌اند؛ 2.l و 2.r هم طرف دیگر. با فشار دادن دکمه، طرف 1 به طرف 2 وصل می‌شود.

چرا با INPUT_PULLUP دکمه‌ی فشرده LOW می‌خواند؟

چون مقاومت داخلی پایه را به ۵ ولت می‌کشد و دکمه آن را به GND وصل می‌کند. پس بدون فشار HIGH و با فشار LOW است. در کد باید به همین برعکس بودن فکر کنی.

لرزش دکمه چیست؟

تیغه‌های فلزی داخل دکمه موقع فشار چند میلی‌ثانیه چند بار باز و بسته می‌شوند. اگر کدت فقط تغییر را بشمارد، یک فشار ممکن است چند فشار حساب شود. با صبر کردن چند ده میلی‌ثانیه بعد از هر تغییر این مشکل حل می‌شود.

📖 طرز کار، مشخصات فنی و نکته‌های خرید این قطعه در دانشنامه‌ی تینکرکد فارسی: دکمه فشاری آمده است.

آموزش‌هایی که از این قطعه استفاده می‌کنند

🔘

دکمه و وقفه (IRQ) با میکروپایتون روی رزبری پای پیکو

😴

دیپ اسلیپ ESP32: خواب عمیق، بیدار شدن با تایمر و دکمه و ماه‌ها کار با یک باتری

🐍

آموزش میکروپایتون از صفر: متغیر، شرط، حلقه، تابع، لیست و کار با پایه‌های برد

🔢

نمایشگر سون‌سگمنت ۴ رقمی TM1637 با آردوینو: عدد، دونقطه و تایمر معکوس

⏰

ماژول ساعت DS3231 با آردوینو: ساعت و تاریخی که با قطع برق هم گم نمی‌شود

⚙️

استپر موتور 28BYJ-48 با درایور ULN2003 و آردوینو: چرخش دقیق به درجه

قطعه‌های دیگرِ کلید، دکمه و ورودی

🔛

کلید کشویی

Slide Switch

🎛️

پتانسیومتر (ولوم)

Potentiometer

🔀

کلید SPDT (تبدیل سه‌پایه)

SPDT Switch

🔀

کلید DPDT (دوپل دوطرفه)

DPDT Switch

🔘

کلید راکر (گهواره‌ای)

Rocker Switch

🎚️

کلید چرخشی (سلکتوری)

Rotary Switch

همه‌ی ۱۰۵ قطعه ← · آموزش مدار

دکمه فشاری را در شبیه‌ساز امتحان کن 🚀