From d0d352d4dcef3803588b2467e63f957c734ac8a7 Mon Sep 17 00:00:00 2001 From: Egor Shitikov Date: Mon, 12 Aug 2024 09:40:09 -0700 Subject: [PATCH] some improvements --- src/main.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index d43863a..d02253e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -95,7 +95,7 @@ uint16_t result_detections[RADIOLIB_SX126X_SPECTRAL_SCAN_RES_SIZE]; uint16_t filtered_result[RADIOLIB_SX126X_SPECTRAL_SCAN_RES_SIZE]; // Waterfall array -bool waterfall[20][STEPS][20]; // 20 - ??? steps of the waterfall +bool waterfall[STEPS]; // 20 - ??? steps of the waterfall // global variable @@ -345,7 +345,7 @@ void loop(void) drone_detected_frequency_start = 0; display.setTextAlignment(TEXT_ALIGN_RIGHT); - // horizontal x axis loop + // horizontal (x axis) Frequency loop for (x = 0; x < STEPS * SCAN_RBW_RFACTOR; x++) { #if ANIMATED_RELOAD @@ -355,8 +355,10 @@ void loop(void) #ifdef PRINT_PROFILE_TIME scan_start_time = millis(); #endif - - waterfall[range_item][x / SCAN_RBW_RFACTOR][w] = false; + // Real display pixel x - axis. + // Beacuse of the SCAN_RBW_RFACTOR x is not a display coordinate anymore. + int dispaly_x = x / SCAN_RBW_RFACTOR; + waterfall[dispaly_x] = false; freq = fr_begin + (range * ((float)x / (STEPS * SCAN_RBW_RFACTOR))); radio.setFrequency(freq, false); // false = no calibration need here @@ -481,11 +483,11 @@ void loop(void) if (single_page_scan) { // Drone detection true for waterfall - if (!waterfall[range_item][x / SCAN_RBW_RFACTOR][w]) + if (!waterfall[dispaly_x]) { - waterfall[range_item][x / SCAN_RBW_RFACTOR][w] = true; + waterfall[dispaly_x] = true; display.setColor(WHITE); - display.setPixel(x / SCAN_RBW_RFACTOR, w); + display.setPixel(dispaly_x, w); } } #endif @@ -526,21 +528,19 @@ void loop(void) #if (DRAW_DETECTION_TICKS == true) // draw vertical line on top of display for "drone detected" // frequencies - display.drawLine(x / SCAN_RBW_RFACTOR, 1, x / SCAN_RBW_RFACTOR, - 6); + display.drawLine(dispaly_x, 1, dispaly_x, 6); #endif } #if (WATERFALL_ENABLED == true) if ((filtered_result[y] == 1) && (y < drone_detection_level) && - (single_page_scan) && - (waterfall[range_item][x / SCAN_RBW_RFACTOR][w] != true)) + (single_page_scan) && (waterfall[dispaly_x] != true)) { // If drone not found set dark pixel on the waterfall // TODO: make something like scrolling up if possible - waterfall[range_item][x / SCAN_RBW_RFACTOR][w] = false; + waterfall[dispaly_x] = false; display.setColor(BLACK); - display.setPixel(x / SCAN_RBW_RFACTOR, w); + display.setPixel(dispaly_x, w); display.setColor(WHITE); } #endif @@ -553,7 +553,7 @@ void loop(void) if (filtered_result[y] == 1) { // Set signal level pixel - display.setPixel(x / SCAN_RBW_RFACTOR, y); + display.setPixel(dispaly_x, y); if (!detected) detected = true; }