From 213e26d1e08bd62962e00af9c34b87aa7acc3931 Mon Sep 17 00:00:00 2001 From: Miroslav Pivovarsky Date: Thu, 27 Jun 2024 22:23:02 +0200 Subject: [PATCH] update FLASH led code --- .../ESP32_PrusaConnectCam.ino | 5 ++++ ESP32_PrusaConnectCam/camera.cpp | 27 ++++++++++++++++++- ESP32_PrusaConnectCam/camera.h | 4 +-- ESP32_PrusaConnectCam/cfg.cpp | 7 ++--- ESP32_PrusaConnectCam/mcu_cfg.h | 4 +-- .../module_AI_Thinker_ESP32-CAM.h | 4 +++ .../module_ESP32-S3-EYE_2_2.h | 22 ++++++++------- .../module_ESP32-WROVER-DEV.h | 8 ++++-- ESP32_PrusaConnectCam/module_ESP32_S3_CAM.h | 6 ++++- 9 files changed, 67 insertions(+), 20 deletions(-) diff --git a/ESP32_PrusaConnectCam/ESP32_PrusaConnectCam.ino b/ESP32_PrusaConnectCam/ESP32_PrusaConnectCam.ino index e0da57f..37ef29a 100644 --- a/ESP32_PrusaConnectCam/ESP32_PrusaConnectCam.ino +++ b/ESP32_PrusaConnectCam/ESP32_PrusaConnectCam.ino @@ -55,6 +55,8 @@ #include "stream.h" #include "serial_cfg.h" +//#include "esp32s3eye_lcd.h" + void setup() { /* Serial port for debugging purposes */ Serial.begin(SERIAL_PORT_SPEED); @@ -105,6 +107,9 @@ void setup() { /* init class for communication with PrusaConnect */ Connect.Init(); + //Esp32Lcd LcdDisplay; + //LcdDisplay.draw_color(0x000000); + /* init wdg */ SystemLog.AddEvent(LogLevel_Info, F("Init WDG")); esp_task_wdt_config_t twdt_config; diff --git a/ESP32_PrusaConnectCam/camera.cpp b/ESP32_PrusaConnectCam/camera.cpp index a3d338d..9f9f8b1 100644 --- a/ESP32_PrusaConnectCam/camera.cpp +++ b/ESP32_PrusaConnectCam/camera.cpp @@ -22,7 +22,7 @@ Camera SystemCamera(&SystemConfig, &SystemLog, FLASH_GPIO_NUM); @param uint8_t - flash pin @return none */ -Camera::Camera(Configuration* i_conf, Logs* i_log, uint8_t i_FlashPin) { +Camera::Camera(Configuration* i_conf, Logs* i_log, int8_t i_FlashPin) { config = i_conf; log = i_log; @@ -50,7 +50,13 @@ void Camera::Init() { #if (true == ENABLE_CAMERA_FLASH) log->AddEvent(LogLevel_Info, F("Init GPIO")); +#if (true == CAMERA_FLASH_PWM_CTRL) ledcAttach(FLASH_GPIO_NUM, FLASH_PWM_FREQ, FLASH_PWM_RESOLUTION); + +#elif (true == CAMERA_FLASH_DIGITAL_CTRL) + pinMode(FLASH_GPIO_NUM, OUTPUT); + digitalWrite(FLASH_GPIO_NUM, LOW); +#endif SetFlashStatus(false); #endif @@ -220,11 +226,20 @@ void Camera::SetPhotoSending(bool i_data) { */ void Camera::SetFlashStatus(bool i_data) { #if (true == ENABLE_CAMERA_FLASH) +#if (true == CAMERA_FLASH_PWM_CTRL) if (true == i_data) { ledcWrite(FLASH_GPIO_NUM, FLASH_ON_STATUS); } else if (false == i_data) { ledcWrite(FLASH_GPIO_NUM, FLASH_OFF_STATUS); } + +#elif (true == CAMERA_FLASH_DIGITAL_CTRL) + if (true == i_data) { + digitalWrite(FLASH_GPIO_NUM, HIGH); + } else if (false == i_data) { + digitalWrite(FLASH_GPIO_NUM, LOW); + } +#endif #endif } @@ -234,12 +249,22 @@ void Camera::SetFlashStatus(bool i_data) { @return bool - true = on, false = off */ bool Camera::GetFlashStatus() { +#if (true == ENABLE_CAMERA_FLASH) +#if (true == CAMERA_FLASH_PWM_CTRL) if (ledcRead(FLASH_GPIO_NUM) == FLASH_OFF_STATUS) { return false; } else if (ledcRead(FLASH_GPIO_NUM) == FLASH_ON_STATUS) { return true; } +#elif (true == CAMERA_FLASH_DIGITAL_CTRL) + if (digitalRead(FLASH_GPIO_NUM) == LOW) { + return false; + } else if (digitalRead(FLASH_GPIO_NUM) == HIGH) { + return true; + } +#endif +#endif return false; } diff --git a/ESP32_PrusaConnectCam/camera.h b/ESP32_PrusaConnectCam/camera.h index bf1a5f6..20de18f 100644 --- a/ESP32_PrusaConnectCam/camera.h +++ b/ESP32_PrusaConnectCam/camera.h @@ -57,7 +57,7 @@ private: bool exposure_ctrl; ///< exposure control bool CameraFlashEnable; ///< enable/disable camera flash function uint16_t CameraFlashTime; ///< camera fash duration time - uint8_t CameraFlashPin; ///< GPIO pin for LED + int8_t CameraFlashPin; ///< GPIO pin for LED framesize_t TFrameSize; ///< framesize_t type for camera module uint8_t imageExifRotation; ///< image rotation. 0 degree: value 1, 90 degree: value 6, 180 degree: value 3, 270 degree: value 8 @@ -87,7 +87,7 @@ private: void InitCameraModule(); public: - Camera(Configuration*, Logs*, uint8_t); + Camera(Configuration*, Logs*, int8_t); ~Camera(){}; void Init(); void ApplyCameraCfg(); diff --git a/ESP32_PrusaConnectCam/cfg.cpp b/ESP32_PrusaConnectCam/cfg.cpp index b4e301b..44f8b11 100644 --- a/ESP32_PrusaConnectCam/cfg.cpp +++ b/ESP32_PrusaConnectCam/cfg.cpp @@ -223,14 +223,15 @@ void Configuration::CheckResetCfg() { /* wait for ungrounded reset pin, and binking led */ while (digitalRead(CFG_RESET_PIN) == LOW) { - analogWrite(FLASH_GPIO_NUM, 20); + digitalWrite(CFG_RESET_LED_PIN, CFG_RESET_LED_LEVEL_ON); delay(100); - analogWrite(FLASH_GPIO_NUM, 0); + digitalWrite(CFG_RESET_LED_PIN, !CFG_RESET_LED_LEVEL_ON); delay(100); } /* turn off LED, reset cfg, reset MCU */ - analogWrite(FLASH_GPIO_NUM, 0); + digitalWrite(CFG_RESET_LED_PIN, !CFG_RESET_LED_LEVEL_ON); + DefaultCfg(); ESP.restart(); diff --git a/ESP32_PrusaConnectCam/mcu_cfg.h b/ESP32_PrusaConnectCam/mcu_cfg.h index 10acbe4..f3f8c1e 100644 --- a/ESP32_PrusaConnectCam/mcu_cfg.h +++ b/ESP32_PrusaConnectCam/mcu_cfg.h @@ -14,10 +14,10 @@ #define _MCU_CFG_H_ /* ----------------- CAMERA TYPE ---------------*/ -//#define AI_THINKER_ESP32_CAM +#define AI_THINKER_ESP32_CAM //#define ESP32_WROVER_DEV //#define CAMERA_MODEL_ESP32_S3_CAM -#define CAMERA_MODEL_ESP32_S3_EYE_2_2 +//#define CAMERA_MODEL_ESP32_S3_EYE_2_2 /* ---------------- BASIC MCU CFG --------------*/ #define SW_VERSION "1.1.0-rc1" ///< SW version diff --git a/ESP32_PrusaConnectCam/module_AI_Thinker_ESP32-CAM.h b/ESP32_PrusaConnectCam/module_AI_Thinker_ESP32-CAM.h index 3a982e1..b452d1b 100644 --- a/ESP32_PrusaConnectCam/module_AI_Thinker_ESP32-CAM.h +++ b/ESP32_PrusaConnectCam/module_AI_Thinker_ESP32-CAM.h @@ -54,6 +54,8 @@ /* --------------- FLASH LED CFG ---------------*/ #define ENABLE_CAMERA_FLASH true ///< Enable camera flash function +#define CAMERA_FLASH_DIGITAL_CTRL false ///< Enable camera flash digital control +#define CAMERA_FLASH_PWM_CTRL true ///< Enable camera flash PWM control #define FLASH_GPIO_NUM 4 ///< Flash control pin #define FLASH_OFF_STATUS 0 ///< PWM intensity LED for OFF. 0-2^FLASH_PWM_RESOLUTION = 0-255 #define FLASH_ON_STATUS 205 ///< PWM intensity LED for ON. limitation to 80%. 2^FLASH_PWM_RESOLUTION * 0.8% = 204 @@ -69,6 +71,8 @@ /* ---------- RESET CFG CONFIGURATION ----------*/ #define CFG_RESET_PIN 12 ///< GPIO 16 is for reset CFG to default +#define CFG_RESET_LED_PIN 4 ///< GPIO for indication of reset CFG +#define CFG_RESET_LED_LEVEL_ON HIGH ///< GPIO pin level for status LED ON /* -------------- STATUS LED CFG ----------------*/ #define STATUS_LED_ENABLE true ///< enable/disable status LED diff --git a/ESP32_PrusaConnectCam/module_ESP32-S3-EYE_2_2.h b/ESP32_PrusaConnectCam/module_ESP32-S3-EYE_2_2.h index 2bca8ee..acad88c 100644 --- a/ESP32_PrusaConnectCam/module_ESP32-S3-EYE_2_2.h +++ b/ESP32_PrusaConnectCam/module_ESP32-S3-EYE_2_2.h @@ -60,16 +60,18 @@ #define ENABLE_PSRAM true ///< Enable PSRAM /* --------------- OTA UPDATE CFG --------------*/ -#define OTA_UPDATE_FW_FILE PSTR("ESP32_S3_EYE_22_PrusaConnectCam.ino.bin") ///< OTA update firmware file name +#define OTA_UPDATE_FW_FILE PSTR("ESP32S3_EYE22_PrusaConnectCam.ino.bin") ///< OTA update firmware file name /* --------------- FLASH LED CFG ---------------*/ -#define ENABLE_CAMERA_FLASH false ///< Enable camera flash function -#define FLASH_GPIO_NUM 4 ///< Flash control pin -#define FLASH_OFF_STATUS 0 ///< PWM intensity LED for OFF. 0-2^FLASH_PWM_RESOLUTION = 0-255 -#define FLASH_ON_STATUS 205 ///< PWM intensity LED for ON. limitation to 80%. 2^FLASH_PWM_RESOLUTION * 0.8% = 204 -#define FLASH_PWM_FREQ 2000 ///< frequency of pwm [240MHz / (100 prescale * pwm cycles)] = frequency -#define FLASH_PWM_CHANNEL 0 ///< channel 0 -#define FLASH_PWM_RESOLUTION 8 ///< range 1-20bit. 8bit = 0-255 range +#define ENABLE_CAMERA_FLASH true ///< Enable camera flash function +#define CAMERA_FLASH_DIGITAL_CTRL true ///< Enable camera flash digital control +#define CAMERA_FLASH_PWM_CTRL false ///< Enable camera flash PWM control +#define FLASH_GPIO_NUM 48 ///< Flash control pin. This is pin for enable LCD backlight +#define FLASH_OFF_STATUS LOW ///< PWM intensity LED for OFF. 0-2^FLASH_PWM_RESOLUTION = 0-255 +#define FLASH_ON_STATUS HIGH ///< PWM intensity LED for ON. limitation to 80%. 2^FLASH_PWM_RESOLUTION * 0.8% = 204 +//#define FLASH_PWM_FREQ 2000 ///< frequency of pwm [240MHz / (100 prescale * pwm cycles)] = frequency +//#define FLASH_PWM_CHANNEL 0 ///< channel 0 +//#define FLASH_PWM_RESOLUTION 8 ///< range 1-20bit. 8bit = 0-255 range /* --------------- SD CARD CFG ---------------*/ #define ENABLE_SD_CARD true ///< Enable SD card function @@ -78,7 +80,9 @@ #define SD_PIN_DATA0 40 ///< GPIO pin for SD card data 0 /* ---------- RESET CFG CONFIGURATION ----------*/ -#define CFG_RESET_PIN 1 ///< GPIO 16 is for reset CFG to default +#define CFG_RESET_PIN 1 ///< GPIO 1 is for reset CFG to default. This is button UP+` +#define CFG_RESET_LED_PIN 3 ///< GPIO for indication of reset CFG +#define CFG_RESET_LED_LEVEL_ON LOW ///< GPIO pin level for status LED ON /* -------------- STATUS LED CFG ----------------*/ #define STATUS_LED_ENABLE true ///< enable/disable status LED diff --git a/ESP32_PrusaConnectCam/module_ESP32-WROVER-DEV.h b/ESP32_PrusaConnectCam/module_ESP32-WROVER-DEV.h index fe720ba..28c3cf7 100644 --- a/ESP32_PrusaConnectCam/module_ESP32-WROVER-DEV.h +++ b/ESP32_PrusaConnectCam/module_ESP32-WROVER-DEV.h @@ -50,11 +50,13 @@ #define ENABLE_PSRAM true ///< Enable PSRAM /* --------------- OTA UPDATE CFG --------------*/ -#define OTA_UPDATE_FW_FILE PSTR("ESP32_WROVER_DEV_PrusaConnectCam.ino.bin") ///< OTA update firmware file name +#define OTA_UPDATE_FW_FILE PSTR("ESP32_WROVERDEV_PrusaConnectCam.ino.bin") ///< OTA update firmware file name /* --------------- FLASH LED CFG ---------------*/ #define ENABLE_CAMERA_FLASH false ///< Enable camera flash function -#define FLASH_GPIO_NUM 4 ///< Flash control pin +#define CAMERA_FLASH_DIGITAL_CTRL false ///< Enable camera flash digital control +#define CAMERA_FLASH_PWM_CTRL false ///< Enable camera flash PWM control +#define FLASH_GPIO_NUM -1 ///< Flash control pin #define FLASH_OFF_STATUS 0 ///< PWM intensity LED for OFF. 0-2^FLASH_PWM_RESOLUTION = 0-255 #define FLASH_ON_STATUS 205 ///< PWM intensity LED for ON. limitation to 80%. 2^FLASH_PWM_RESOLUTION * 0.8% = 204 #define FLASH_PWM_FREQ 2000 ///< frequency of pwm [240MHz / (100 prescale * pwm cycles)] = frequency @@ -66,6 +68,8 @@ /* ---------- RESET CFG CONFIGURATION ----------*/ #define CFG_RESET_PIN 12 ///< GPIO 16 is for reset CFG to default +#define CFG_RESET_LED_PIN 2 ///< GPIO for indication of reset CFG +#define CFG_RESET_LED_LEVEL_ON LOW ///< GPIO pin level for status LED ON /* -------------- STATUS LED CFG ----------------*/ #define STATUS_LED_ENABLE true ///< enable/disable status LED diff --git a/ESP32_PrusaConnectCam/module_ESP32_S3_CAM.h b/ESP32_PrusaConnectCam/module_ESP32_S3_CAM.h index 698b411..514799f 100644 --- a/ESP32_PrusaConnectCam/module_ESP32_S3_CAM.h +++ b/ESP32_PrusaConnectCam/module_ESP32_S3_CAM.h @@ -60,10 +60,12 @@ #define ENABLE_PSRAM true ///< Enable PSRAM /* --------------- OTA UPDATE CFG --------------*/ -#define OTA_UPDATE_FW_FILE PSTR("ESP32_S3_CAM_PrusaConnectCam.ino.bin") ///< OTA update firmware file name +#define OTA_UPDATE_FW_FILE PSTR("ESP32S3_CAM_PrusaConnectCam.ino.bin") ///< OTA update firmware file name /* --------------- FLASH LED CFG ---------------*/ #define ENABLE_CAMERA_FLASH false ///< Enable camera flash function +#define CAMERA_FLASH_DIGITAL_CTRL true ///< Enable camera flash digital control +#define CAMERA_FLASH_PWM_CTRL false ///< Enable camera flash PWM control #define FLASH_GPIO_NUM 4 ///< Flash control pin #define FLASH_OFF_STATUS 0 ///< PWM intensity LED for OFF. 0-2^FLASH_PWM_RESOLUTION = 0-255 #define FLASH_ON_STATUS 205 ///< PWM intensity LED for ON. limitation to 80%. 2^FLASH_PWM_RESOLUTION * 0.8% = 204 @@ -79,6 +81,8 @@ /* ---------- RESET CFG CONFIGURATION ----------*/ #define CFG_RESET_PIN 2 ///< GPIO 16 is for reset CFG to default +#define CFG_RESET_LED_PIN 34 ///< GPIO for indication of reset CFG +#define CFG_RESET_LED_LEVEL_ON LOW ///< GPIO pin level for status LED ON /* -------------- STATUS LED CFG ----------------*/ #define STATUS_LED_ENABLE true ///< enable/disable status LED