ESP32:Примеры/Управление светодиодом с помощью кнопки: различия между версиями
Myagkij (обсуждение | вклад) (→Код) |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
{{ESP32 панель перехода}} | {{ESP32 панель перехода}} | ||
{{Перевод от Сubewriter}} | {{Перевод от Сubewriter}} | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Управление светодиодом с помощью кнопки= | =Управление светодиодом с помощью кнопки= | ||
Строка 14: | Строка 11: | ||
В этих двух строчках создаем две переменные, где будут храниться номера контактов: | В этих двух строчках создаем две переменные, где будут храниться номера контактов: | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
const int buttonPin = 4; // номер контакта для кнопки | const int buttonPin = 4; // номер контакта для кнопки | ||
const int ledPin = 16; // номер контакта для светодиода | const int ledPin = 16; // номер контакта для светодиода | ||
Строка 23: | Строка 20: | ||
Далее создаем переменную, в которой будет храниться состояние кнопки: | Далее создаем переменную, в которой будет храниться состояние кнопки: | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
int buttonState = 0; | int buttonState = 0; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 29: | Строка 26: | ||
В блоке [[Arduino:Справочник языка Arduino/setup()|setup()]] делаем кнопку входным ([[Arduino:Справочник языка Arduino/Константы/INPUT|INPUT]]), а [[светодиод]] – выходным ([[Arduino:Справочник языка Arduino/Константы/OUTPUT|OUTPUT]]) устройством. Используем для этого функцию [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/pinMode()|pinMode()]], параметрами для которой служат контакт, к которому вы обращаетесь, и режим его работы ([[Arduino:Справочник языка Arduino/Константы/INPUT|INPUT]] или [[Arduino:Справочник языка Arduino/Константы/OUTPUT|OUTPUT]]). | В блоке [[Arduino:Справочник языка Arduino/setup()|setup()]] делаем кнопку входным ([[Arduino:Справочник языка Arduino/Константы/INPUT|INPUT]]), а [[светодиод]] – выходным ([[Arduino:Справочник языка Arduino/Константы/OUTPUT|OUTPUT]]) устройством. Используем для этого функцию [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/pinMode()|pinMode()]], параметрами для которой служат контакт, к которому вы обращаетесь, и режим его работы ([[Arduino:Справочник языка Arduino/Константы/INPUT|INPUT]] или [[Arduino:Справочник языка Arduino/Константы/OUTPUT|OUTPUT]]). | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
pinMode(buttonPin, INPUT); | pinMode(buttonPin, INPUT); | ||
pinMode(ledPin, OUTPUT); | pinMode(ledPin, OUTPUT); | ||
Строка 38: | Строка 35: | ||
В следующей строчке считываем состояние кнопки и сохраняем его в переменную '''«buttonState»'''. Для этого используется функция [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/digitalRead()|digitalRead()]]: | В следующей строчке считываем состояние кнопки и сохраняем его в переменную '''«buttonState»'''. Для этого используется функция [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/digitalRead()|digitalRead()]]: | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
buttonState = digitalRead(buttonPin); | buttonState = digitalRead(buttonPin); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 44: | Строка 41: | ||
Далее стоит оператор [[Arduino:Справочник языка Arduino/Управляющие операторы/if|if()]], проверяющий, не является ли состоянием кнопки значение «[[Arduino:Справочник языка Arduino/Константы/HIGH|HIGH]]». Если является, он включает [[светодиод]] при помощи функции [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/digitalWrite()|digitalWrite()]] с параметрами '''«ledPin»''' и '''«[[Arduino:Справочник языка Arduino/Константы/HIGH|HIGH]]»'''. | Далее стоит оператор [[Arduino:Справочник языка Arduino/Управляющие операторы/if|if()]], проверяющий, не является ли состоянием кнопки значение «[[Arduino:Справочник языка Arduino/Константы/HIGH|HIGH]]». Если является, он включает [[светодиод]] при помощи функции [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/digitalWrite()|digitalWrite()]] с параметрами '''«ledPin»''' и '''«[[Arduino:Справочник языка Arduino/Константы/HIGH|HIGH]]»'''. | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
if (buttonState == HIGH) { | if (buttonState == HIGH) { | ||
// включаем светодиод: | // включаем светодиод: | ||
Строка 52: | Строка 49: | ||
Если значение кнопки – это не '''«[[Arduino:Справочник языка Arduino/Константы/HIGH|HIGH]]»''', то [[светодиод]] будет выключен при помощи той же функции [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/digitalWrite()|digitalWrite()]], однако теперь ее вторым параметром будет '''«[[Arduino:Справочник языка Arduino/Константы/LOW|LOW]]»'''. | Если значение кнопки – это не '''«[[Arduino:Справочник языка Arduino/Константы/HIGH|HIGH]]»''', то [[светодиод]] будет выключен при помощи той же функции [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/digitalWrite()|digitalWrite()]], однако теперь ее вторым параметром будет '''«[[Arduino:Справочник языка Arduino/Константы/LOW|LOW]]»'''. | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
} else { | } else { | ||
// выключаем светодиод: | // выключаем светодиод: | ||
Строка 59: | Строка 56: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{ | {{Блок/Инфо4|Важно|Перед тем, как строить какую-либо цепь, всегда сверяйтесь с распиновкой свой платы. }} | ||
== Необходимое оборудование == | == Необходимое оборудование == | ||
Строка 73: | Строка 70: | ||
==Схема== | ==Схема== | ||
{{ | {{Примечание1|На данной схеме используется плата [[ESP32S-HiLetgo]], если вы используете другую, сверьтесь с вашей распиновкой.}} | ||
Кнопка подключена к контакту '''GPIO4''' через [[резистор]] на [[10 кОм]], а [[светодиод]] – к контакту '''GPIO16''' через [[резистор]] [[330 Ом]]. | Кнопка подключена к контакту '''GPIO4''' через [[резистор]] на [[10 кОм]], а [[светодиод]] – к контакту '''GPIO16''' через [[резистор]] [[330 Ом]]. | ||
Строка 81: | Строка 78: | ||
==Код== | ==Код== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
// задаем номера контактов: | // задаем номера контактов: | ||
const int buttonPin = 4; // номер контакта для кнопки | const int buttonPin = 4; // номер контакта для кнопки | ||
Строка 118: | Строка 115: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Портал/ESP32}} | |||
[[Категория:ESP32]] | [[Категория:ESP32]] |
Текущая версия от 09:17, 18 июня 2023
Управление светодиодом с помощью кнопки
Этот скетч-пример демонстрирует как считывать данные с входных цифровых контактов и управлять выходными цифровыми контактами при помощи платы 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);
}
}
См.также
Внешние ссылки