Задать вопрос
  • ESP32-cam ov2640 и UART?

    @Sergiv Автор вопроса
    код ниже работает, но частота небольшая (

    #include "esp_camera.h"

    // Определение пинов для подключения камеры
    #define PWDN_GPIO_NUM 32
    #define RESET_GPIO_NUM -1
    #define XCLK_GPIO_NUM 0
    #define SIOD_GPIO_NUM 26
    #define SIOC_GPIO_NUM 27

    #define Y9_GPIO_NUM 35
    #define Y8_GPIO_NUM 34
    #define Y7_GPIO_NUM 39
    #define Y6_GPIO_NUM 36
    #define Y5_GPIO_NUM 21
    #define Y4_GPIO_NUM 19
    #define Y3_GPIO_NUM 5
    #define Y2_GPIO_NUM 4
    #define VSYNC_GPIO_NUM 25
    #define HREF_GPIO_NUM 23
    #define PCLK_GPIO_NUM 22

    void startCamera();

    void setup() {
    Serial.begin(115200);
    Serial.setDebugOutput(true);
    Serial.println();

    camera_config_t config;
    config.ledc_channel = LEDC_CHANNEL_0;
    config.ledc_timer = LEDC_TIMER_0;
    config.pin_d0 = Y2_GPIO_NUM;
    config.pin_d1 = Y3_GPIO_NUM;
    config.pin_d2 = Y4_GPIO_NUM;
    config.pin_d3 = Y5_GPIO_NUM;
    config.pin_d4 = Y6_GPIO_NUM;
    config.pin_d5 = Y7_GPIO_NUM;
    config.pin_d6 = Y8_GPIO_NUM;
    config.pin_d7 = Y9_GPIO_NUM;
    config.pin_xclk = XCLK_GPIO_NUM;
    config.pin_pclk = PCLK_GPIO_NUM;
    config.pin_vsync = VSYNC_GPIO_NUM;
    config.pin_href = HREF_GPIO_NUM;
    config.pin_sccb_sda = SIOD_GPIO_NUM;
    config.pin_sccb_scl = SIOC_GPIO_NUM;
    config.pin_pwdn = PWDN_GPIO_NUM;
    config.pin_reset = RESET_GPIO_NUM;
    config.xclk_freq_hz = 20000000;
    config.pixel_format = PIXFORMAT_GRAYSCALE;
    config.frame_size = FRAMESIZE_QQVGA; // Change the frame size if needed
    config.fb_count = 1;

    // Initialize camera
    esp_err_t err = esp_camera_init(&config);

    }

    void startCamera() {
    camera_fb_t *fb = NULL;
    // Take and process one frame
    fb = esp_camera_fb_get();
    if (!fb) {
    Serial.println("Failed to capture frame");
    return;
    }

    int brightestX = 0;
    int brightestY = 0;
    uint8_t maxBrightness = 0; // Изначально устанавливаем наименьшую яркость

    // Проходим по всем пикселям и находим самый яркий
    for (int y = 0; y < fb->height; y++) {
    for (int x = 0; x < fb->width; x++) {
    // Получаем яркость пикселя в текущих координатах
    uint8_t brightness = fb->buf[y * fb->width + x];
    // Если текущий пиксель ярче предыдущего найденного, обновляем координаты и значение яркости
    if (brightness > maxBrightness) {
    brightestX = x;
    brightestY = y;
    maxBrightness = brightness;
    }
    }
    }

    // Выводим координаты самого яркого пикселя
    Serial.print("Brightest pixel coordinates: ");
    Serial.print(brightestX);
    Serial.print(", ");
    Serial.println(brightestY);

    esp_camera_fb_return(fb); // Освобождаем память, занятую кадром
    }

    void loop() {
    startCamera(); // Запускаем камеру в цикле
    delay(100); // Задержка между кадрами
    }
    Ответ написан
    Комментировать