ESP32:Примеры/Управление светодиодом с помощью кнопки: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
 
Нет описания правки
 
(не показаны 4 промежуточные версии 2 участников)
Строка 1: Строка 1:
{{ESP32 панель перехода}}
{{ESP32 панель перехода}}
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
{{Myagkij-редактор}}
{{Myagkij-редактор}}
{{Черновик}}


=Управление светодиодом с помощью кнопки=
=Управление светодиодом с помощью кнопки=
Строка 14: Строка 11:
В этих двух строчках создаем две переменные, где будут храниться номера контактов:
В этих двух строчках создаем две переменные, где будут храниться номера контактов:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
const int buttonPin = 4;  // номер контакта для кнопки
const int buttonPin = 4;  // номер контакта для кнопки
const int ledPin = 16;    // номер контакта для светодиода
const int ledPin = 16;    // номер контакта для светодиода
Строка 23: Строка 20:
Далее создаем переменную, в которой будет храниться состояние кнопки:
Далее создаем переменную, в которой будет храниться состояние кнопки:


<syntaxhighlight lang="c" enclose="div">
<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" enclose="div">
<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" enclose="div">
<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" enclose="div">
<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" enclose="div">
<syntaxhighlight lang="c">
} else {
} else {
  // выключаем светодиод:
  // выключаем светодиод:
Строка 59: Строка 56:
</syntaxhighlight>
</syntaxhighlight>


{{Спойлер|'''Важно:'''  Перед тем, как строить какую-либо цепь, всегда сверяйтесь с распиновкой свой платы. }}
{{Блок/Инфо4|Важно|Перед тем, как строить какую-либо цепь, всегда сверяйтесь с распиновкой свой платы. }}


== Необходимое оборудование ==
== Необходимое оборудование ==
Строка 73: Строка 70:
==Схема==
==Схема==


{{Спойлер|На данной схеме используется плата [[ESP32S-HiLetgo]], если вы используете другую, сверьтесь с вашей распиновкой.}}
{{Примечание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" enclose="div">
<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);
}
Важно

Перед тем, как строить какую-либо цепь, всегда сверяйтесь с распиновкой свой платы.

Необходимое оборудование

Схема

Примечание

На данной схеме используется плата ESP32S-HiLetgo, если вы используете другую, сверьтесь с вашей распиновкой.

Кнопка подключена к контакту 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);
  }
}

См.также

Внешние ссылки