ESP32:Примеры/Управление светодиодом с помощью кнопки: различия между версиями
Myagkij (обсуждение | вклад) (→Код) |
Myagkij (обсуждение | вклад) |
||
Строка 59: | Строка 59: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{ | {{Блок/Инфо4|Важно|Перед тем, как строить какую-либо цепь, всегда сверяйтесь с распиновкой свой платы. }} | ||
== Необходимое оборудование == | == Необходимое оборудование == | ||
Строка 73: | Строка 73: | ||
==Схема== | ==Схема== | ||
{{ | {{Примечание1|На данной схеме используется плата [[ESP32S-HiLetgo]], если вы используете другую, сверьтесь с вашей распиновкой.}} | ||
Кнопка подключена к контакту '''GPIO4''' через [[резистор]] на [[10 кОм]], а [[светодиод]] – к контакту '''GPIO16''' через [[резистор]] [[330 Ом]]. | Кнопка подключена к контакту '''GPIO4''' через [[резистор]] на [[10 кОм]], а [[светодиод]] – к контакту '''GPIO16''' через [[резистор]] [[330 Ом]]. |
Версия от 19:28, 5 мая 2022
Черновик |
Управление светодиодом с помощью кнопки
Этот скетч-пример демонстрирует как считывать данные с входных цифровых контактов и управлять выходными цифровыми контактами при помощи платы ESP32, запрограммированный с помощью среды разработки Arduino IDE.
Рассмотрим код более подробно.
В этих двух строчках создаем две переменные, где будут храниться номера контактов:
const int buttonPin = 4; // номер контакта для кнопки
const int ledPin = 16; // номер контакта для светодиода
Кнопка подключена к контакту GPIO4, а светодиод – к контакту GPIO16. При использовании IDE Arduino для программирования ESP32 контакт 4 – это GPIO4, а контакт 16 – это GPIO16.
Далее создаем переменную, в которой будет храниться состояние кнопки:
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», то светодиод будет выключен при помощи той же функции digitalWrite(), однако теперь ее вторым параметром будет «LOW».
} else {
// выключаем светодиод:
digitalWrite(ledPin, LOW);
}
Необходимое оборудование
- Плата ESP32 - 1шт.;
- Светодиод - 1шт.;
- Резистор на 330 Ом - 1шт.;
- Резистор на 10 кОм - 1шт.;
- Кнопка - 1шт.;
- Провода-перемычки;
- Макетная плата - 1шт;
Схема
Кнопка подключена к контакту GPIO4 через резистор на 10 кОм, а светодиод – к контакту GPIO16 через резистор 330 Ом.
Код
// задаем номера контактов:
const int buttonPin = 4; // номер контакта для кнопки
const int ledPin = 16; // номер контакта для светодиода
// переменная для хранения статуса кнопки:
int buttonState = 0;
void setup() {
Serial.begin(115200);
// инициализируем контакт кнопки, делая его входным контактом:
pinMode(buttonPin, INPUT);
// инициализируем контакт светодиода, делая его выходным контактом:
pinMode(ledPin, OUTPUT);
}
void loop() {
// считываем значение кнопки:
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
// проверяем, нажата ли кнопка;
// если нажата, значением в «buttonState» будет «HIGH»:
if (buttonState == HIGH) {
// включаем светодиод:
digitalWrite(ledPin, HIGH);
} else {
// выключаем светодиод:
digitalWrite(ledPin, LOW);
}
}