ESP8266 NodeMCU: цифровые входы и цифровые выходы (Arduino IDE)
В этом вводном руководстве вы узнаете, как считывать цифровые входы, такие как кнопка, и управлять цифровыми выходами, такими как светодиод, используя плату ESP8266 NodeMCU с Arduino IDE.
Необходимые условия
Мы будем программировать ESP8266 с помощью Arduino IDE. Поэтому убедитесь, что у вас установлен пакет плат ESP8266, прежде чем продолжить:
Управление цифровыми выходами ESP8266 NodeMCU
Сначала необходимо установить GPIO, которым вы хотите управлять, как OUTPUT. Используйте функцию pinMode() следующим образом:
pinMode(GPIO, OUTPUT);
Для управления цифровым выходом достаточно использовать функцию digitalWrite(), которая принимает в качестве аргументов GPIO (целое число), к которому вы обращаетесь, и состояние — HIGH или LOW.
digitalWrite(GPIO, STATE);
Ознакомьтесь с Справочным руководством по GPIO ESP8266, чтобы узнать, какие GPIO лучше всего подходят для использования в качестве выходов.
Чтение цифровых входов ESP8266 NodeMCU
Сначала установите GPIO, который вы хотите считывать, как INPUT, используя функцию pinMode() следующим образом:
pinMode(GPIO, INPUT);
Для чтения цифрового входа, например кнопки, используйте функцию digitalRead(), которая принимает в качестве аргумента GPIO (целое число), к которому вы обращаетесь.
digitalRead(GPIO);
Ознакомьтесь с Справочным руководством по GPIO ESP8266, чтобы узнать, какие GPIO лучше всего подходят для использования в качестве входов.
Пример проекта
Чтобы показать вам, как использовать цифровые входы и цифровые выходы, мы создадим простой пример проекта с кнопкой и светодиодом. Мы будем считывать состояние кнопки и включать светодиод соответствующим образом, как показано на следующем рисунке.
Схема подключения
Перед тем как продолжить, необходимо собрать схему со светодиодом и кнопкой. Мы подключим светодиод к GPIO 5 (D1), а кнопку — к GPIO 4 (D2).
Необходимые компоненты
Вот список компонентов, которые вам понадобятся для сборки схемы:
ESP8266 (читайте Лучшие платы разработки ESP8266) |
|
Вы можете использовать приведённые выше ссылки или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!
Код
Скопируйте следующий код в вашу Arduino IDE.
// Complete Instructions: https://RandomNerdTutorials.com/esp8266-nodemcu-digital-inputs-outputs-arduino/
// 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, а светодиод — к GPIO 5. При использовании Arduino IDE с ESP8266, число 4 соответствует GPIO 4, а число 5 — GPIO 5.
Далее вы создаёте переменную для хранения состояния кнопки. По умолчанию её значение равно 0 (не нажата).
int buttonState = 0;
В setup() вы инициализируете кнопку как INPUT, а светодиод как OUTPUT. Для этого используется функция pinMode(), которая принимает вывод, к которому вы обращаетесь, и режим: INPUT или OUTPUT.
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
В loop() происходит чтение состояния кнопки и соответствующее управление светодиодом.
В следующей строке вы считываете состояние кнопки и сохраняете его в переменной buttonState. Как мы видели ранее, для этого используется функция digitalRead().
buttonState = digitalRead(buttonPin);
Следующий оператор if проверяет, находится ли состояние кнопки в значении HIGH. Если да, он включает светодиод с помощью функции digitalWrite(), которая принимает в качестве аргументов ledPin и состояние HIGH.
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
Если состояние кнопки не равно HIGH, вы выключаете светодиод. Просто укажите 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».
Демонстрация
После загрузки кода проверьте вашу схему. Светодиод должен загореться при нажатии кнопки:
И погаснуть, когда вы её отпустите:
Заключение
В этом вводном руководстве вы узнали, как считывать цифровые входы и управлять цифровыми выходами ESP8266 с помощью Arduino IDE.
Если вы хотите узнать, как считывать аналоговые входы или выводить ШИМ-сигналы, прочитайте следующие руководства:
Вам также может быть полезно ознакомиться со Справочным руководством по GPIO ESP8266, в котором описано, как использовать GPIO ESP8266 и их функции.
Наконец, если вы хотите узнать больше об ESP8266, ознакомьтесь с нашими ресурсами: