Найти тему
Паяльник и код

ESP32-CAM. Регулировка яркости светодиода.

Модуль ESP32-CAM представляет собой небольшой модуль камеры размером 39мм на 27мм. Этот модуль может работать самостоятельно как самая маленькая web-камера.

В интернете находится множество примеров как настроить её в Arduino IDE. Поэтому рассмотрим, как в стандартный пример CameraWebServer добавить ползунок для управления яркостью светодиода. Вот этого:

-2

В примере нам нужно поправить два файла.

app_httpd.cpp – это сама программа управления платой

camera_index.h – хранит HTML файл страницы управления камерой через браузер

Сначала на HTML страницу добавляем ползунок для управления яркостью светодиода.

Приводим к читаемому виду значения из массива index_ov2640_html_gz[] через сайт https://gchq.github.io/CyberChef/

В окно Input копируем значения массива. В окно Recipe добавляем команды:

From_Hex('Auto')

Gunzip()

В окне Output результат:

-3

Добавляем объект-ползунок с название flash:

-4

Конвертируем обратно полученный результат с помощью команд:

Gzip('Dynamic Huffman Coding','','',false)

To_Hex('0x with comma',16)

-5

Из окна Output копируем обратно в массив index_ov2640_html_gz[]

Изменяем строчку:

#define index_ov2640_html_gz_len 4400

Заменяем число на количество элементов в нашем массиве. Сохраняем файл camera_index.h

Теперь нужно добавить обработку изменений ползунка flash.

Изменяем файл app_httpd.cpp

1. В заголовке задаем значения по умолчанию

//номер вывода светодиода
#define LED_BUILTIN 4

//номер канала управления яркостью

const int ledChannel = 15;

//текущее состояние ползунка
static int8_t flash_enabled = 0;

2. В функцию esp_err_t status_handler(httpd_req_t *req) добавляем текущее состояние ползунка:

p+=sprintf(p, "\"flash\":%u,", flash_enabled);

3. В функцию startCameraServer() добавляем инициализацию портов

ledcSetup(ledChannel, 5000, 8);

ledcAttachPin(LED_BUILTIN, ledChannel);

4. В функцию esp_err_t cmd_handler(httpd_req_t *req) добавляем обработчик события изменения состояния ползунка

else if(!strcmp(variable, "flash")) {

flash_enabled = val;

//светим с заданной яркостью
ledcWrite(ledChannel, val);

}

Сохраняем. Заливаем прошивку на плату.

Результат:

-6

Появился ползунок для управления яркостью светодиода.

Исходник

https://disk.yandex.ru/d/UnkWkYdH496XTQ

Для лучшего понимания что нужно изменять можно воспользоваться удобной бесплатной программой WinMerge. Она подсветит все изменения.