ESP8266 NodeMCU: цифровые входы и цифровые выходы (Arduino IDE)

В этом вводном руководстве вы узнаете, как считывать цифровые входы, такие как кнопка, и управлять цифровыми выходами, такими как светодиод, используя плату 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 лучше всего подходят для использования в качестве входов.

Пример проекта

Чтобы показать вам, как использовать цифровые входы и цифровые выходы, мы создадим простой пример проекта с кнопкой и светодиодом. Мы будем считывать состояние кнопки и включать светодиод соответствующим образом, как показано на следующем рисунке.

ESP8266 NodeMCU кнопка нажата или нет для включения и выключения светодиода

Схема подключения

Перед тем как продолжить, необходимо собрать схему со светодиодом и кнопкой. Мы подключим светодиод к GPIO 5 (D1), а кнопку — к GPIO 4 (D2).

Необходимые компоненты

Вот список компонентов, которые вам понадобятся для сборки схемы:

ESP8266 (читайте Лучшие платы разработки ESP8266)

Светодиод 5 мм

Резистор 330 Ом

Кнопка

Резистор 10 кОм

Макетная плата

Соединительные провода

Вы можете использовать приведённые выше ссылки или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!

Схема подключения ESP8266 NodeMCU цифровой вход и цифровой выход светодиод кнопка

Код

Скопируйте следующий код в вашу 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 NodeMCU вход выход кнопка нажата светодиод включен Arduino IDE

И погаснуть, когда вы её отпустите:

ESP8266 NodeMCU вход выход кнопка не нажата Arduino IDE

Заключение

В этом вводном руководстве вы узнали, как считывать цифровые входы и управлять цифровыми выходами ESP8266 с помощью Arduino IDE.

Если вы хотите узнать, как считывать аналоговые входы или выводить ШИМ-сигналы, прочитайте следующие руководства:

Вам также может быть полезно ознакомиться со Справочным руководством по GPIO ESP8266, в котором описано, как использовать GPIO ESP8266 и их функции.

Наконец, если вы хотите узнать больше об ESP8266, ознакомьтесь с нашими ресурсами: