From 20e7dae92a62877d973c9a7c072c03e41d144f06 Mon Sep 17 00:00:00 2001 From: peepeetee Date: Fri, 3 May 2024 04:01:08 -0500 Subject: [PATCH] cleanup code, add raw value output --- keyboards/momokai/tap_trio_pro/config.h | 2 +- keyboards/momokai/tap_trio_pro/lut.c | 26 ++++++++----- keyboards/momokai/tap_trio_pro/matrix.c | 5 +++ keyboards/momokai/tap_trio_pro/tap_trio_pro.c | 37 +++++++++++-------- 4 files changed, 44 insertions(+), 26 deletions(-) diff --git a/keyboards/momokai/tap_trio_pro/config.h b/keyboards/momokai/tap_trio_pro/config.h index 00627bd4541..bf2bde16828 100644 --- a/keyboards/momokai/tap_trio_pro/config.h +++ b/keyboards/momokai/tap_trio_pro/config.h @@ -10,7 +10,7 @@ #define DEBUG_ENABLE // #define DEBUG_MATRIX_SCAN_RATE -#define ADC_RESOLUTION 12 +#define ADC_RESOLUTION 8 #define CALIBRATION_RANGE 255 diff --git a/keyboards/momokai/tap_trio_pro/lut.c b/keyboards/momokai/tap_trio_pro/lut.c index bc1143268cd..77882c9e301 100644 --- a/keyboards/momokai/tap_trio_pro/lut.c +++ b/keyboards/momokai/tap_trio_pro/lut.c @@ -1,28 +1,34 @@ -/* Copyright 2023 RephlexZero (@RephlexZero) +/* Copyright 2023 RephlexZero (@RephlexZero) 2024 peepeetee (@peepeetee) SPDX-License-Identifier: GPL-2.0-or-later */ #include #include "scanfunctions.h" #include "util.h" /* Equation parameters for the sensor-magnet linearity mapping */ -const double a = 16654600.6755; -const double b = -0.00955994866577; -const double c = -1278.75103145; -const double d = 16652478.4163; +const double a = 0.200347177016; +const double b = 0.00955994866154; +const double c = 6.01110636956; +const double d = 1966.74076381; uint16_t distance_to_adc(uint8_t distance) { - distance = MIN(MAX(distance, 0), 255); - return a * (1 - exp(-b * (distance + c))) - d; + double intermediate = a * exp(b * distance + c) + d; + uint16_t adc = (uint16_t) MAX(0, MIN(intermediate, 4095)); + return adc; } uint8_t adc_to_distance(uint16_t adc) { - return MIN(MAX(((log(1 - ((adc + d) / a)) / -b) - c), 0), 255); + if (adc <= d) { + return 0; + } + double intermediate = (log((adc - d) / a) - c) / b; + uint8_t distance = (uint8_t) MAX(0, MIN(intermediate, 255)); + return distance; } -uint8_t lut[4096] = {0}; +uint8_t lut[ADC_RESOLUTION_MAX] = {0}; void generate_lut(void) { - for (uint16_t i = 0; i < a - d; i++) { + for (uint16_t i = 0; i < ADC_RESOLUTION_MAX; i++) { lut[i] = adc_to_distance(i); } } diff --git a/keyboards/momokai/tap_trio_pro/matrix.c b/keyboards/momokai/tap_trio_pro/matrix.c index ed316ffe362..4909557c695 100644 --- a/keyboards/momokai/tap_trio_pro/matrix.c +++ b/keyboards/momokai/tap_trio_pro/matrix.c @@ -212,6 +212,11 @@ bool matrix_scan_custom(matrix_row_t current_matrix[]) { // matrix_row_t is an alias for u_int8_t + + + + + memcpy(previous_matrix, current_matrix, sizeof(previous_matrix)); for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { diff --git a/keyboards/momokai/tap_trio_pro/tap_trio_pro.c b/keyboards/momokai/tap_trio_pro/tap_trio_pro.c index 1804eba5213..0d4410ad064 100644 --- a/keyboards/momokai/tap_trio_pro/tap_trio_pro.c +++ b/keyboards/momokai/tap_trio_pro/tap_trio_pro.c @@ -34,28 +34,35 @@ void bootmagic_lite(void) { # ifdef DEBUG_ENABLE deferred_token debug_token; bool debug_print(void) { - uint8_t hall_effect_rows = 1; - char buffer[hall_effect_rows * MATRIX_COLS * 5 + MATRIX_ROWS * 2]; - buffer[0] = '\0'; + // uint8_t hall_effect_rows = 1; + // char buffer[hall_effect_rows * MATRIX_COLS * 5 + MATRIX_ROWS * 2]; + // buffer[0] = '\0'; - // for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - uint8_t row = 1; - for (uint8_t col = 0; col < MATRIX_COLS; col++) { - hybrid_key_t *key = &keys[row][col]; - char temp[6]; - snprintf(temp, sizeof(temp), "%5u", key->value); - strcat(buffer, temp); - } - strcat(buffer, "\n"); - // } + // // for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + // uint8_t row = 1; + // for (uint8_t col = 0; col < MATRIX_COLS; col++) { + // hybrid_key_t *key = &keys[row][col]; + // char temp[6]; + // snprintf(temp, sizeof(temp), "%5u", key->value); + // strcat(buffer, temp); + // } + // strcat(buffer, "\n"); + // // } - uprintf("%s", buffer); + // uprintf("%s", buffer); + + int raw_analog_value[3]; + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + + raw_analog_value[col] = analogReadPin(matrix_pins[1][col]); + } + printf("raw_analog_value = %d, %d, %d\n", raw_analog_value[0], raw_analog_value[1], raw_analog_value[2]); return true; } uint32_t debug_print_callback(uint32_t trigger_time, void *cb_arg) { - // debug_print(); + debug_print(); return 25; } # endif