در درسهای قبل یاد گرفتیم چطور یک پایه را خروجی کنیم و LED روشن کنیم. حالا میخواهیم یک ورودی بخوانیم: یک دکمه. با تابع digitalRead میتوانیم بفهمیم دکمه فشرده شده یا نه.
اول باید پایهای که دکمه به آن وصل است را ورودی تعریف کنیم. در آردوینو یک حالت خیلی کاربردی داریم به نام INPUT_PULLUP. این حالت یک مقاومت داخلی را فعال میکند تا پایه ورودی هیچوقت «شناور» و بیمقدار نباشد.
pinMode(2, INPUT_PULLUP);
این نکته مهم است. وقتی از INPUT_PULLUP استفاده میکنیم، در حالت عادی (دکمه رها) مقدار پایه HIGH است. وقتی دکمه را فشار میدهیم، پایه به زمین (GND) وصل میشود و مقدار آن LOW میشود. پس منطق برعکس چیزی است که شاید انتظار داشته باشی: فشردن = LOW.
این کد دکمهای روی پایه ۲ را میخواند و تا وقتی فشرده است، LED روی پایه ۱۳ را روشن نگه میدارد:
int buttonPin = 2;
int ledPin = 13;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
int state = digitalRead(buttonPin);
if (state == LOW) { // دکمه فشرده شده
digitalWrite(ledPin, HIGH);
} else { // دکمه رها است
digitalWrite(ledPin, LOW);
}
}
در این کد، digitalRead(buttonPin) مقدار پایه را میخواند و در متغیر state میریزد. سپس با if بررسی میکنیم اگر برابر LOW بود (یعنی دکمه فشرده شده)، LED روشن شود و در غیر این صورت خاموش بماند.
این کد را همین حالا در حالت کدنویسی شبیهساز روبومیکر بنویس و اجرا کن.
🔌 همین حالا توی شبیهساز آنلاین روبومیکر امتحان کن — رایگان و بدون نصب