Этот скетч-пример демонстрирует как считывать данные с входных цифровых контактов и управлять выходными цифровыми контактами при помощи платы 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); }
Необходимое оборудование
Кнопка подключена к контакту GPIO4 через резистор на 10 кОм, а светодиод – к контакту GPIO16 через резистор 330 Ом. На данной схеме используется плата ESP32S-HiLetgo, если вы используете другую, сверьтесь с вашей распиновкой.
// задаем номера контактов: 2 const int buttonPin = 4; // номер контакта для кнопки 3 const int ledPin = 16; // номер контакта для светодиода 4 5 // переменная для хранения статуса кнопки: 6 int buttonState = 0; 7 8 void setup() { 9 Serial.begin(115200); 10 // инициализируем контакт кнопки, делая его входным контактом: 11 pinMode(buttonPin, INPUT); 12 // инициализируем контакт светодиода, делая его выходным контактом: 13 pinMode(ledPin, OUTPUT); 14 } 15 16 void loop() { 17 // считываем значение кнопки: 18 buttonState = digitalRead(buttonPin); 19 Serial.println(buttonState); 20 // проверяем, нажата ли кнопка; 21 // если нажата, значением в «buttonState» будет «HIGH»: 22 if (buttonState == HIGH) { 23 // включаем светодиод: 24 digitalWrite(ledPin, HIGH); 25 } else { 26 // выключаем светодиод: 27 digitalWrite(ledPin, LOW); 28 } 29 }