cleanup code, add raw value output

This commit is contained in:
peepeetee 2024-05-03 04:01:08 -05:00
parent 8781b54ee1
commit 20e7dae92a
4 changed files with 44 additions and 26 deletions

View File

@ -10,7 +10,7 @@
#define DEBUG_ENABLE
// #define DEBUG_MATRIX_SCAN_RATE
#define ADC_RESOLUTION 12
#define ADC_RESOLUTION 8
#define CALIBRATION_RANGE 255

View File

@ -1,28 +1,34 @@
/* Copyright 2023 RephlexZero (@RephlexZero)
/* Copyright 2023 RephlexZero (@RephlexZero) 2024 peepeetee (@peepeetee)
SPDX-License-Identifier: GPL-2.0-or-later */
#include <math.h>
#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);
}
}

View File

@ -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++) {

View File

@ -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