Модуль ESP32-CAM представляет собой небольшой модуль камеры размером 39мм на 27мм. Этот модуль может работать самостоятельно как самая маленькая web-камера.
В интернете находится множество примеров как настроить её в Arduino IDE. Поэтому рассмотрим, как в стандартный пример CameraWebServer добавить ползунок для управления яркостью светодиода. Вот этого:
В примере нам нужно поправить два файла.
app_httpd.cpp – это сама программа управления платой
camera_index.h – хранит HTML файл страницы управления камерой через браузер
Сначала на HTML страницу добавляем ползунок для управления яркостью светодиода.
Приводим к читаемому виду значения из массива index_ov2640_html_gz[] через сайт https://gchq.github.io/CyberChef/
В окно Input копируем значения массива. В окно Recipe добавляем команды:
From_Hex('Auto')
Gunzip()
В окне Output результат:
Добавляем объект-ползунок с название flash:
Конвертируем обратно полученный результат с помощью команд:
Gzip('Dynamic Huffman Coding','','',false)
To_Hex('0x with comma',16)
Из окна 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);
}
Сохраняем. Заливаем прошивку на плату.
Результат:
Появился ползунок для управления яркостью светодиода.
Исходник
https://disk.yandex.ru/d/UnkWkYdH496XTQ
Для лучшего понимания что нужно изменять можно воспользоваться удобной бесплатной программой WinMerge. Она подсветит все изменения.