From fd77add1e5a71ad2cc3ca9efb343220328242c4c Mon Sep 17 00:00:00 2001 From: dhacks541 <46331701+dhacks541@users.noreply.github.com> Date: Wed, 11 Dec 2024 09:39:51 -0500 Subject: [PATCH 1/9] commit for test --- platformio.ini | 2 +- src/Control Tasks/CameraControlTask.cpp | 11 ++++++++++- src/constants.hpp | 8 ++++---- src/sfr.cpp | 12 ++++++------ 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/platformio.ini b/platformio.ini index 2e09edd8..82ed0c54 100644 --- a/platformio.ini +++ b/platformio.ini @@ -5,7 +5,7 @@ framework = arduino upload_protocol = teensy-cli test_build_src = true board_build.f_cpu = 24000000L -build_flags = -D VERBOSE -D TEENSY_OPT_SMALLEST_CODE +build_flags = -D VERBOSE -D TEENSY_OPT_SMALLEST_CODE -D ACS_SIM -D SIMULATOR lib_ldf_mode = deep monitor_filters = default, log2file diff --git a/src/Control Tasks/CameraControlTask.cpp b/src/Control Tasks/CameraControlTask.cpp index 1e1eb4ed..ec5be881 100644 --- a/src/Control Tasks/CameraControlTask.cpp +++ b/src/Control Tasks/CameraControlTask.cpp @@ -104,6 +104,7 @@ void CameraControlTask::camera_init() sfr::camera::init_mode = (uint16_t)sensor_init_mode_type::complete; sfr::camera::power_setting = (uint8_t)sensor_power_mode_type::do_nothing; sfr::camera::powered = true; + sfr::camera::start_progress = 0; break; } } @@ -206,7 +207,15 @@ void CameraControlTask::execute() #ifdef VERBOSE Serial.println("Done writing file"); #endif - sfr::camera::power_setting = (uint8_t)sensor_power_mode_type::off; + if (sfr::camera::images_written == 1) { + sfr::camera::take_photo = true; +#ifdef VERBOSE + Serial.println("Triggering second activation of optical sensor"); +#endif + } + if (sfr::camera::images_written >= 2) { + sfr::camera::power_setting = (uint8_t)sensor_power_mode_type::off; + } } } } diff --git a/src/constants.hpp b/src/constants.hpp index 150876fe..8a1ba3e4 100644 --- a/src/constants.hpp +++ b/src/constants.hpp @@ -86,10 +86,10 @@ namespace constants { constexpr uint16_t fault_opcode_max = 0x6100; } // namespace opcodes - } // namespace rockblock + } // namespace rockblock namespace temperature { constexpr int pin = 39; - constexpr int in_sun_val = 30; + constexpr int in_sun_val = 0; constexpr int min_temp_c = -100; constexpr int max_temp_c = 200; } // namespace temperature @@ -98,7 +98,7 @@ namespace constants { constexpr float in_sun_val = 70; // mA constexpr int load = 30; // load resister value (kOhm) constexpr float shunt = 0.1; // shunt resistor value (Ohm) - } // namespace current + } // namespace current namespace masks { constexpr uint32_t uint32_byte1_mask = 0b11111111000000000000000000000000; constexpr uint32_t uint32_byte2_mask = 0b00000000111111110000000000000000; @@ -304,6 +304,6 @@ namespace constants { namespace watchdog { constexpr uint32_t max_period_ms = 10000; } // namespace watchdog -}; // namespace constants +}; // namespace constants #endif \ No newline at end of file diff --git a/src/sfr.cpp b/src/sfr.cpp index d689a44d..c75333df 100644 --- a/src/sfr.cpp +++ b/src/sfr.cpp @@ -4,11 +4,11 @@ namespace sfr { namespace stabilization { // OP Codes 1100 // TODO actual default value - SFRField max_time = SFRField(2 * constants::time::one_hour, 0x1100); + SFRField max_time = SFRField(2 * constants::time::one_minute, 0x1100); } // namespace stabilization namespace boot { // OP Codes 1200 - SFRField max_time = SFRField(2 * constants::time::one_hour, 0x1200); + SFRField max_time = SFRField(2 * constants::time::one_minute, 0x1200); } // namespace boot namespace detumble { // OP Codes 1500 @@ -17,13 +17,13 @@ namespace sfr { SFRField max_stable_gyro_y = SFRField((0.2 * constants::imu::sfr_resolution), 0x1502, constants::imu::sfr_resolution); // rad/s SFRField min_unstable_gyro_x = SFRField((0.7 * constants::imu::sfr_resolution), 0x1503, constants::imu::sfr_resolution); // rad/s SFRField min_unstable_gyro_y = SFRField((0.7 * constants::imu::sfr_resolution), 0x1504, constants::imu::sfr_resolution); // rad/s - } // namespace detumble + } // namespace detumble namespace aliveSignal { // OP Codes 1600 SFRField downlinked = SFRField(false, 0x1600); SFRField max_downlink_hard_faults = SFRField(3, 0x1601); SFRField num_hard_faults = SFRField(0, 0x1602); - SFRField max_time = SFRField(2 * constants::time::one_hour, 0x1603); + SFRField max_time = SFRField(2 * constants::time::one_minute, 0x1603); } // namespace aliveSignal namespace photoresistor { // OP Codes 1700 @@ -153,7 +153,7 @@ namespace sfr { SFRField last_downlink = SFRField(0, 0x2108); SFRField downlink_period = SFRField(20 * constants::time::one_minute, 0, 2 * constants::time::one_day, 0x2109); SFRField lp_downlink_period = SFRField(constants::time::one_hour, constants::time::one_second, 2 * constants::time::one_day, 0x2110); - SFRField transmit_downlink_period = SFRField(20 * constants::time::one_minute, constants::time::one_second, 2 * constants::time::one_day, 0x2111); + SFRField transmit_downlink_period = SFRField(5 * constants::time::one_minute, constants::time::one_second, 2 * constants::time::one_day, 0x2111); SFRField on_time = SFRField(35 * constants::time::one_minute, 0, constants::time::one_revolution, 0x2112); char buffer[constants::rockblock::buffer_size] = {0}; @@ -283,4 +283,4 @@ namespace sfr { SFRField dynamic_data_age = SFRField(0, 0x2809); SFRField sfr_data_age = SFRField(0, 0x2810); } // namespace eeprom -}; // namespace sfr \ No newline at end of file +}; // namespace sfr \ No newline at end of file From 6dcd48a380ac4c9e539b5d0617d2b2607d3e5bf4 Mon Sep 17 00:00:00 2001 From: dhacks541 <46331701+dhacks541@users.noreply.github.com> Date: Thu, 12 Dec 2024 20:25:33 -0500 Subject: [PATCH 2/9] fixes and testing environment settings --- src/Control Tasks/CameraControlTask.cpp | 11 ++++++++++- src/Monitors/ButtonMonitor.cpp | 10 +++++++++- src/sfr.cpp | 8 ++++---- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/Control Tasks/CameraControlTask.cpp b/src/Control Tasks/CameraControlTask.cpp index ec5be881..38216555 100644 --- a/src/Control Tasks/CameraControlTask.cpp +++ b/src/Control Tasks/CameraControlTask.cpp @@ -161,6 +161,8 @@ void CameraControlTask::execute() Serial.println("Failed to snap!"); #endif } else { + Serial.print("photo time: "); + Serial.println(millis()); jpglen = adaCam.frameLength(); #ifdef VERBOSE Serial.println("\n\n\nOptical sensor data captured!\n\n\n"); @@ -209,9 +211,16 @@ void CameraControlTask::execute() #endif if (sfr::camera::images_written == 1) { sfr::camera::take_photo = true; + if (!adaCam.resumeVideo()) { #ifdef VERBOSE - Serial.println("Triggering second activation of optical sensor"); + Serial.println("Failed to resume camera frame!"); #endif + sfr::camera::power_setting = (uint8_t)sensor_power_mode_type::off; + } else { +#ifdef VERBOSE + Serial.println("Triggering second activation of optical sensor"); +#endif + } } if (sfr::camera::images_written >= 2) { sfr::camera::power_setting = (uint8_t)sensor_power_mode_type::off; diff --git a/src/Monitors/ButtonMonitor.cpp b/src/Monitors/ButtonMonitor.cpp index 5d40cf67..8959b924 100644 --- a/src/Monitors/ButtonMonitor.cpp +++ b/src/Monitors/ButtonMonitor.cpp @@ -18,6 +18,14 @@ void ButtonMonitor::execute() fault_groups::hardware_faults::button->force(); } } else { - sfr::button::pressed = true; + if (sfr::mission::possible_uncovered) { + if (sfr::button::button_pressed) { + Serial.print("button time: "); + Serial.println(millis()); + } + sfr::button::button_pressed = false; + } else { + sfr::button::pressed = true; + } } } \ No newline at end of file diff --git a/src/sfr.cpp b/src/sfr.cpp index c75333df..66add83a 100644 --- a/src/sfr.cpp +++ b/src/sfr.cpp @@ -4,11 +4,11 @@ namespace sfr { namespace stabilization { // OP Codes 1100 // TODO actual default value - SFRField max_time = SFRField(2 * constants::time::one_minute, 0x1100); + SFRField max_time = SFRField(2 * constants::time::one_hour, 0x1100); } // namespace stabilization namespace boot { // OP Codes 1200 - SFRField max_time = SFRField(2 * constants::time::one_minute, 0x1200); + SFRField max_time = SFRField(2 * constants::time::one_hour, 0x1200); } // namespace boot namespace detumble { // OP Codes 1500 @@ -23,7 +23,7 @@ namespace sfr { SFRField downlinked = SFRField(false, 0x1600); SFRField max_downlink_hard_faults = SFRField(3, 0x1601); SFRField num_hard_faults = SFRField(0, 0x1602); - SFRField max_time = SFRField(2 * constants::time::one_minute, 0x1603); + SFRField max_time = SFRField(2 * constants::time::one_hour, 0x1603); } // namespace aliveSignal namespace photoresistor { // OP Codes 1700 @@ -153,7 +153,7 @@ namespace sfr { SFRField last_downlink = SFRField(0, 0x2108); SFRField downlink_period = SFRField(20 * constants::time::one_minute, 0, 2 * constants::time::one_day, 0x2109); SFRField lp_downlink_period = SFRField(constants::time::one_hour, constants::time::one_second, 2 * constants::time::one_day, 0x2110); - SFRField transmit_downlink_period = SFRField(5 * constants::time::one_minute, constants::time::one_second, 2 * constants::time::one_day, 0x2111); + SFRField transmit_downlink_period = SFRField(1 * constants::time::one_minute, constants::time::one_second, 2 * constants::time::one_day, 0x2111); SFRField on_time = SFRField(35 * constants::time::one_minute, 0, constants::time::one_revolution, 0x2112); char buffer[constants::rockblock::buffer_size] = {0}; From 232fc50e95219ab5518761ef8d631c162df6e4bf Mon Sep 17 00:00:00 2001 From: dhacks541 <46331701+dhacks541@users.noreply.github.com> Date: Thu, 12 Dec 2024 22:04:03 -0500 Subject: [PATCH 3/9] test changes --- src/Monitors/ButtonMonitor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Monitors/ButtonMonitor.cpp b/src/Monitors/ButtonMonitor.cpp index 8959b924..ffa1c491 100644 --- a/src/Monitors/ButtonMonitor.cpp +++ b/src/Monitors/ButtonMonitor.cpp @@ -23,7 +23,7 @@ void ButtonMonitor::execute() Serial.print("button time: "); Serial.println(millis()); } - sfr::button::button_pressed = false; + sfr::button::pressed = false; } else { sfr::button::pressed = true; } From a523e7945e0970ee8c9f27bd3bda0c3be5f6218e Mon Sep 17 00:00:00 2001 From: dhacks541 <46331701+dhacks541@users.noreply.github.com> Date: Thu, 12 Dec 2024 22:06:46 -0500 Subject: [PATCH 4/9] button monitor --- src/Monitors/ButtonMonitor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Monitors/ButtonMonitor.cpp b/src/Monitors/ButtonMonitor.cpp index ffa1c491..93c1bd38 100644 --- a/src/Monitors/ButtonMonitor.cpp +++ b/src/Monitors/ButtonMonitor.cpp @@ -19,7 +19,7 @@ void ButtonMonitor::execute() } } else { if (sfr::mission::possible_uncovered) { - if (sfr::button::button_pressed) { + if (sfr::button::pressed) { Serial.print("button time: "); Serial.println(millis()); } From 96ffae706f9e20849b78f4550a71ca6264a94e84 Mon Sep 17 00:00:00 2001 From: dhacks541 <46331701+dhacks541@users.noreply.github.com> Date: Sat, 14 Dec 2024 11:59:20 -0500 Subject: [PATCH 5/9] enable second photo capture --- platformio.ini | 2 +- src/Monitors/ButtonMonitor.cpp | 10 +--------- src/sfr.cpp | 2 +- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/platformio.ini b/platformio.ini index 82ed0c54..4ef6193b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -5,7 +5,7 @@ framework = arduino upload_protocol = teensy-cli test_build_src = true board_build.f_cpu = 24000000L -build_flags = -D VERBOSE -D TEENSY_OPT_SMALLEST_CODE -D ACS_SIM -D SIMULATOR +build_flags = -D VERBOSE -D TEENSY_OPT_SMALLEST_CODE lib_ldf_mode = deep monitor_filters = default, log2file diff --git a/src/Monitors/ButtonMonitor.cpp b/src/Monitors/ButtonMonitor.cpp index 93c1bd38..5d40cf67 100644 --- a/src/Monitors/ButtonMonitor.cpp +++ b/src/Monitors/ButtonMonitor.cpp @@ -18,14 +18,6 @@ void ButtonMonitor::execute() fault_groups::hardware_faults::button->force(); } } else { - if (sfr::mission::possible_uncovered) { - if (sfr::button::pressed) { - Serial.print("button time: "); - Serial.println(millis()); - } - sfr::button::pressed = false; - } else { - sfr::button::pressed = true; - } + sfr::button::pressed = true; } } \ No newline at end of file diff --git a/src/sfr.cpp b/src/sfr.cpp index 66add83a..aa19c5b8 100644 --- a/src/sfr.cpp +++ b/src/sfr.cpp @@ -153,7 +153,7 @@ namespace sfr { SFRField last_downlink = SFRField(0, 0x2108); SFRField downlink_period = SFRField(20 * constants::time::one_minute, 0, 2 * constants::time::one_day, 0x2109); SFRField lp_downlink_period = SFRField(constants::time::one_hour, constants::time::one_second, 2 * constants::time::one_day, 0x2110); - SFRField transmit_downlink_period = SFRField(1 * constants::time::one_minute, constants::time::one_second, 2 * constants::time::one_day, 0x2111); + SFRField transmit_downlink_period = SFRField(20 * constants::time::one_minute, constants::time::one_second, 2 * constants::time::one_day, 0x2111); SFRField on_time = SFRField(35 * constants::time::one_minute, 0, constants::time::one_revolution, 0x2112); char buffer[constants::rockblock::buffer_size] = {0}; From a0aedb462d7783e924d6e2bf30f0f60692882744 Mon Sep 17 00:00:00 2001 From: dhacks541 <46331701+dhacks541@users.noreply.github.com> Date: Sat, 14 Dec 2024 15:11:03 -0500 Subject: [PATCH 6/9] camera capture changes --- platformio.ini | 2 +- src/Control Tasks/CameraControlTask.cpp | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index 4ef6193b..2e09edd8 100644 --- a/platformio.ini +++ b/platformio.ini @@ -5,7 +5,7 @@ framework = arduino upload_protocol = teensy-cli test_build_src = true board_build.f_cpu = 24000000L -build_flags = -D VERBOSE -D TEENSY_OPT_SMALLEST_CODE +build_flags = -D VERBOSE -D TEENSY_OPT_SMALLEST_CODE lib_ldf_mode = deep monitor_filters = default, log2file diff --git a/src/Control Tasks/CameraControlTask.cpp b/src/Control Tasks/CameraControlTask.cpp index 38216555..be47edb4 100644 --- a/src/Control Tasks/CameraControlTask.cpp +++ b/src/Control Tasks/CameraControlTask.cpp @@ -161,8 +161,6 @@ void CameraControlTask::execute() Serial.println("Failed to snap!"); #endif } else { - Serial.print("photo time: "); - Serial.println(millis()); jpglen = adaCam.frameLength(); #ifdef VERBOSE Serial.println("\n\n\nOptical sensor data captured!\n\n\n"); @@ -210,13 +208,13 @@ void CameraControlTask::execute() Serial.println("Done writing file"); #endif if (sfr::camera::images_written == 1) { - sfr::camera::take_photo = true; if (!adaCam.resumeVideo()) { #ifdef VERBOSE Serial.println("Failed to resume camera frame!"); #endif sfr::camera::power_setting = (uint8_t)sensor_power_mode_type::off; } else { + sfr::camera::take_photo = true; #ifdef VERBOSE Serial.println("Triggering second activation of optical sensor"); #endif From aad774f01ce7fb4adb47d19f0e6d43704357d52f Mon Sep 17 00:00:00 2001 From: dhacks541 <46331701+dhacks541@users.noreply.github.com> Date: Sat, 14 Dec 2024 15:18:10 -0500 Subject: [PATCH 7/9] revert temp test changes --- src/constants.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/constants.hpp b/src/constants.hpp index 8a1ba3e4..a1fabd62 100644 --- a/src/constants.hpp +++ b/src/constants.hpp @@ -89,7 +89,7 @@ namespace constants { } // namespace rockblock namespace temperature { constexpr int pin = 39; - constexpr int in_sun_val = 0; + constexpr int in_sun_val = 30; constexpr int min_temp_c = -100; constexpr int max_temp_c = 200; } // namespace temperature From 74fa54c05935e1ec0589eea32406008d07ad38ed Mon Sep 17 00:00:00 2001 From: dhacks541 <46331701+dhacks541@users.noreply.github.com> Date: Wed, 5 Mar 2025 22:09:26 -0500 Subject: [PATCH 8/9] add camera delay --- .github/workflows/test_code.yml | 4 ++-- src/Control Tasks/CameraControlTask.cpp | 8 ++++++-- src/MissionMode.cpp | 2 +- src/Monitors/ButtonMonitor.cpp | 6 +++++- src/constants.hpp | 4 ++-- src/sfr.cpp | 4 ++-- 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test_code.yml b/.github/workflows/test_code.yml index 75539b2c..5cb5eb02 100644 --- a/.github/workflows/test_code.yml +++ b/.github/workflows/test_code.yml @@ -12,13 +12,13 @@ jobs: steps: - uses: actions/checkout@v2 - name: Cache pip - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: ${{ runner.os }}-pip- - name: Cache PlatformIO - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.platformio key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} diff --git a/src/Control Tasks/CameraControlTask.cpp b/src/Control Tasks/CameraControlTask.cpp index be47edb4..d5661fa8 100644 --- a/src/Control Tasks/CameraControlTask.cpp +++ b/src/Control Tasks/CameraControlTask.cpp @@ -104,7 +104,6 @@ void CameraControlTask::camera_init() sfr::camera::init_mode = (uint16_t)sensor_init_mode_type::complete; sfr::camera::power_setting = (uint8_t)sensor_power_mode_type::do_nothing; sfr::camera::powered = true; - sfr::camera::start_progress = 0; break; } } @@ -156,7 +155,11 @@ void CameraControlTask::execute() // handle taking and storing photos if (sfr::camera::take_photo == true && sfr::camera::powered == true) { - if (!adaCam.takePicture()) { + // extra 100ms between comanding photo and trigging capture + if (sfr::camera::start_progress == 6) { + Serial.println("photo triggered, delaying 100ms"); + sfr::camera::start_progress = 0; + } else if (!adaCam.takePicture()) { #ifdef VERBOSE Serial.println("Failed to snap!"); #endif @@ -260,6 +263,7 @@ void CameraControlTask::camera_shutdown() pinMode(constants::camera::tx, OUTPUT); Pins::setPinState(constants::camera::rx, LOW); Pins::setPinState(constants::camera::tx, LOW); + sfr::camera::start_progress = 0; // if SD.begin succeeds but camera is never able to snap, reduce SD card power consumption File file = SD.open("-", FILE_WRITE); diff --git a/src/MissionMode.cpp b/src/MissionMode.cpp index 161b87d9..acfc839c 100644 --- a/src/MissionMode.cpp +++ b/src/MissionMode.cpp @@ -20,7 +20,7 @@ void Boot::transition_to() void Boot::dispatch() { if (sfr::eeprom::time_alive >= sfr::boot::max_time) { - sfr::mission::current_mode = sfr::mission::aliveSignal; + sfr::mission::current_mode = sfr::mission::normalInSun; } } diff --git a/src/Monitors/ButtonMonitor.cpp b/src/Monitors/ButtonMonitor.cpp index 5d40cf67..548399ab 100644 --- a/src/Monitors/ButtonMonitor.cpp +++ b/src/Monitors/ButtonMonitor.cpp @@ -18,6 +18,10 @@ void ButtonMonitor::execute() fault_groups::hardware_faults::button->force(); } } else { - sfr::button::pressed = true; + if (sfr::mission::possible_uncovered) { + sfr::button::pressed = false; + } else { + sfr::button::pressed = true; + } } } \ No newline at end of file diff --git a/src/constants.hpp b/src/constants.hpp index a1fabd62..db8aa6fb 100644 --- a/src/constants.hpp +++ b/src/constants.hpp @@ -89,7 +89,7 @@ namespace constants { } // namespace rockblock namespace temperature { constexpr int pin = 39; - constexpr int in_sun_val = 30; + constexpr int in_sun_val = 0; constexpr int min_temp_c = -100; constexpr int max_temp_c = 200; } // namespace temperature @@ -248,7 +248,7 @@ namespace constants { } // namespace battery namespace camera { constexpr int power_on_pin = 31; - constexpr int content_length = 64; + constexpr int content_length = 80; constexpr int bytes_allocated_fragment = 4; constexpr int tx = 34; constexpr int rx = 33; diff --git a/src/sfr.cpp b/src/sfr.cpp index aa19c5b8..115ba5cb 100644 --- a/src/sfr.cpp +++ b/src/sfr.cpp @@ -8,7 +8,7 @@ namespace sfr { } // namespace stabilization namespace boot { // OP Codes 1200 - SFRField max_time = SFRField(2 * constants::time::one_hour, 0x1200); + SFRField max_time = SFRField(5 * constants::time::one_minute, 0x1200); } // namespace boot namespace detumble { // OP Codes 1500 @@ -153,7 +153,7 @@ namespace sfr { SFRField last_downlink = SFRField(0, 0x2108); SFRField downlink_period = SFRField(20 * constants::time::one_minute, 0, 2 * constants::time::one_day, 0x2109); SFRField lp_downlink_period = SFRField(constants::time::one_hour, constants::time::one_second, 2 * constants::time::one_day, 0x2110); - SFRField transmit_downlink_period = SFRField(20 * constants::time::one_minute, constants::time::one_second, 2 * constants::time::one_day, 0x2111); + SFRField transmit_downlink_period = SFRField(5 * constants::time::one_minute, constants::time::one_second, 2 * constants::time::one_day, 0x2111); SFRField on_time = SFRField(35 * constants::time::one_minute, 0, constants::time::one_revolution, 0x2112); char buffer[constants::rockblock::buffer_size] = {0}; From ebddfee6fe96082290d10adb10f6c2e3d389d1f2 Mon Sep 17 00:00:00 2001 From: dhacks541 <46331701+dhacks541@users.noreply.github.com> Date: Sun, 9 Mar 2025 20:22:15 -0400 Subject: [PATCH 9/9] modify delay time --- src/Control Tasks/CameraControlTask.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Control Tasks/CameraControlTask.cpp b/src/Control Tasks/CameraControlTask.cpp index d5661fa8..fb8143c1 100644 --- a/src/Control Tasks/CameraControlTask.cpp +++ b/src/Control Tasks/CameraControlTask.cpp @@ -155,10 +155,12 @@ void CameraControlTask::execute() // handle taking and storing photos if (sfr::camera::take_photo == true && sfr::camera::powered == true) { - // extra 100ms between comanding photo and trigging capture - if (sfr::camera::start_progress == 6) { + // extra 200ms delay between comanding photo and trigging capture + if (sfr::camera::start_progress < 8) { +#ifdef VERBOSE Serial.println("photo triggered, delaying 100ms"); - sfr::camera::start_progress = 0; +#endif + sfr::camera::start_progress++; } else if (!adaCam.takePicture()) { #ifdef VERBOSE Serial.println("Failed to snap!");