در این راهنما نحوه راه اندازی ورودی خروجی های دیجیتال esp8266 را یاد خواهیم گرفت که چگونه ورودی های دیجیتال را مانند کلید بخوانید و خروجی های دیجیتال مانند LED را با استفاده از برد ESP8266 NodeMCU با Arduino IDE کنترل کنید.

پیش نیازها
ما ESP8266 را با استفاده از Arduino IDE برنامه ریزی می کنیم. بنابراین، قبل از ادامه، مطمئن شوید که افزونه بردهای ESP8266 را روی آردوینو نصب کرده اید که در پست زیر توضیح داده شده:
کنترل خروجی های ESP8266
ابتدا باید GPIO را که می خواهید کنترل کنید به عنوان یک OUTPUT تنظیم کنید. از تابع pinMode() به صورت زیر استفاده کنید:
pinMode(GPIO, OUTPUT);
برای کنترل یک خروجی دیجیتال باید از تابع digitalWrite() استفاده کنید که به عنوان آرگومان، GPIO (عدد int) مورد نظر شما و وضعیت، HIGH یا LOW را می پذیرد.
digitalWrite(GPIO, STATE);
همچنین میتوانید نگاهی به راهنمای جامع پین های ESP8266 (کدام پین ها را میتوانیم استفاده کنیم؟) بیندازید تا بدانید کدام GPIO برای استفاده به عنوان خروجی مناسب تر است.
خواندن ورودی های ESP8266
ابتدا با استفاده از تابع pinMode() آن GPIO را که می خواهید بخوانید به صورت INPUT تنظیم کنید:
;pinMode(GPIO, INPUT)
برای خواندن یک ورودی دیجیتال، مانند یک دکمه، از تابع digitalRead() استفاده می کنید که GPIO (عدد int) مورد نظر شما را به عنوان آرگومان می پذیرد.
digitalRead(GPIO);
همچنین میتوانید نگاهی به راهنمای جامع پین های ESP8266 (کدام پین ها را میتوانیم استفاده کنیم؟) بیندازید تا بدانید کدام GPIO برای استفاده به عنوان خروجی مناسب تر است.
نمونه پروژه
برای اینکه به شما نحوه استفاده از ورودی های دیجیتال و خروجی های دیجیتال را نشان دهیم، یک نمونه پروژه ساده با یک دکمه فشاری و یک LED می سازیم. ما وضعیت دکمه فشاری را می خوانیم و مطابق شکل زیر LED را روشن می کنیم.

شماتیک
قبل از ادامه، باید یک مدار را با یک LED و یک دکمه فشاری جمع کنید. ما LED را به GPIO 5 (D1) و دکمه فشاری را به GPIO 4 (D2) وصل می کنیم.
قطعات مورد نیاز
در اینجا لیستی از قطعاتی که برای ساخت مدار نیاز دارید آمده است:
ESP8266
LED 5 میلی متر
مقاومت 330 اهم
دکمه فشاری
مقاومت 10 کیلو اهم
بردبورد
سیم های جامپر

کد تست
کد زیر را در آردوینو IDE خود کپی کنید.
// set pin numbers
const int buttonPin = 4; // the number of the pushbutton pin
const int ledPin = 5; // the number of the LED pin
// variable for storing the pushbutton status
int buttonState = 0;
void setup() {
// initialize the pushbutton pin as an input
pinMode(buttonPin, INPUT);
// initialize the LED pin as an output
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the state of the pushbutton value
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH
if (buttonState == HIGH) {
// turn LED on
digitalWrite(ledPin, HIGH);
} else {
// turn LED off
digitalWrite(ledPin, LOW);
}
}
نحوه کار کد
در دو خط زیر، متغیرهایی را برای اختصاص پین ایجاد می کنید:
const int buttonPin = 4;
const int ledPin = 5;
دکمه به GPIO 4 و LED به GPIO 5 وصل می شود.
سپس، یک متغیر برای نگه داشتن حالت دکمه ایجاد می کنید. به طور پیش فرض، 0 است (فشرده نشده).
int buttonState = 0;
در setup()، دکمه را به عنوان INPUT و LED را به عنوان OUTPUT مقداردهی می کنید. برای اینکار، از تابع pinMode() استفاده میکنید که پین مورد نظر را میپذیرد و حالت: INPUT یا OUTPUT را به عنوان ورودی دوم دریافت میکند.
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
در حلقه اصلی loop() جایی است که وضعیت دکمه را می خوانید و LED را مطابق با آن تنظیم می کنید.
در خط بعدی وضعیت دکمه را می خوانید و آن را در متغیر buttonState ذخیره می کنید. همانطور که قبلا دیدیم، برای اینکار از تابع digitalRead() استفاده می کنیم.
buttonState = digitalRead(buttonPin);
دستور if پایین، high بودن وضعیت دکمه را بررسی می کند. اگر اینطور باشد، LED را با استفاده از تابع digitalWrite() روشن می کند که ledPin و حالت HIGH را به عنوان آرگومان می پذیرد.
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
اگر وضعیت دکمه HIGH نباشد، LED را خاموش می کنید. فقط LOW را به عنوان آرگومان دوم در تابع digitalWrite() تنظیم کنید.
else {
digitalWrite(ledPin, LOW);
}
آپلود کد
قبل از کلیک بر روی دکمه آپلود، به Tools > Board بروید و برد مورد استفاده خود را انتخاب کنید. در مورد من، NodeMCU 1.0 (ESP-12 E Module) است. اگر مدل ESP8266 خود را نمیشناسید، میتوانید «Generic ESP8266 Module» را انتخاب کنید.
به Tools > Port بروید و پورت COM که ESP8266 به آن متصل است را انتخاب کنید. سپس، دکمه آپلود را فشار دهید و منتظر پیام “Done uploading” باشید.
نتیجه
پس از آپلود کد، مدار خود را تست کنید. هنگامی که دکمه را فشار می دهید LED شما باید روشن شود:

و وقتی دکمه را رها کردید LED خاموش شود

جمع بندی
با این راهنمای شروع، یاد گرفتید که چگونه ورودی های دیجیتال را بخوانید و خروجی های دیجیتال را با ESP8266 با استفاده از Arduino IDE کنترل کنید.
همچنین برای اطلاعات بیشتر میتوانید میتوانید پست های زیر را مطالعه نمایید: