mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-23 08:02:03 +00:00
fix lut, formatting changes
This commit is contained in:
parent
2247f948f6
commit
148dee0ea4
@ -1,4 +1,4 @@
|
||||
/* Copyright 2023 RephlexZero (@RephlexZero) 2024 peepeetee (@peepeetee) 2024 Jenna Fligor (@Ex-32)
|
||||
/* Copyright 202 RephlexZero (@RephlexZero) 2024 peepeetee (@peepeetee) 2024 Jenna Fligor (@Ex-32)
|
||||
SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
@ -20,32 +20,23 @@ SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
// const double lut_d = 1966.74076381;
|
||||
|
||||
/* Equation parameters for the sensor-magnet linearity mapping */
|
||||
// const double lut_a = 1;
|
||||
// const double lut_b = 0.0061787;
|
||||
// const double lut_c = 4.34;
|
||||
// const double lut_d = 1935.43;
|
||||
|
||||
const double lut_a = 0.00609446727442;
|
||||
const double lut_b = 4.40340283615;
|
||||
const double lut_c = 2000;
|
||||
const double lut_a = -366.805673399;
|
||||
const double lut_b = 0.00617870508512;
|
||||
const double lut_c = -1.49468890703;
|
||||
const double lut_d = 2094.38794157;
|
||||
|
||||
uint16_t distance_to_adc(uint16_t distance) {
|
||||
// double intermediate = lut_a * exp(lut_b * distance + lut_c) + lut_d;
|
||||
double intermediate = ((-exp(lut_a*distance + lut_b)) + lut_c);
|
||||
uint16_t adc = (uint16_t) MAX(0, MIN(intermediate, ADC_RESOLUTION_MAX -1));
|
||||
return adc;
|
||||
double intermediate = lut_a * exp(lut_b * distance + lut_c) + lut_d;
|
||||
return (uint16_t) fmax(0, fmin(intermediate, 4095));
|
||||
}
|
||||
|
||||
uint16_t adc_to_distance(uint16_t adc) {
|
||||
// if (adc <= lut_c) {
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
// double intermediate = ((log((adc - lut_d) / lut_a)) - lut_c) / lut_b;
|
||||
|
||||
double intermediate = ((log(lut_c-adc)-lut_b)/lut_a);
|
||||
uint16_t distance = (uint16_t) MAX(0, MIN(intermediate, 400));
|
||||
return distance;
|
||||
double check = (adc - lut_d) / lut_a;
|
||||
if (check <= 0) {
|
||||
return 0;
|
||||
}
|
||||
double intermediate = (log(check) - lut_c) / lut_b;
|
||||
return (uint16_t) fmax(0, fmin(intermediate, 255));
|
||||
}
|
||||
|
||||
uint16_t lut[ADC_RESOLUTION_MAX] = {0};
|
||||
|
@ -213,10 +213,8 @@ bool matrix_scan_custom(matrix_row_t current_matrix[]) {
|
||||
for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
|
||||
if (keys[current_row][0].is_analog == false) {
|
||||
matrix_read_cols_on_row(current_matrix, current_row);
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
} else {
|
||||
for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
|
||||
hybrid_key_t *key = &keys[current_row][current_col];
|
||||
|
||||
|
@ -13,8 +13,8 @@ void get_sensor_offsets(void) {
|
||||
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||
for (uint8_t j = 0; j < MATRIX_COLS; j++) {
|
||||
if (keys[i][j].is_analog) {
|
||||
keys[i][j].offset = rest_adc_value - analogReadPin(matrix_pins[i][j]);
|
||||
printf("Offset: %d\n", keys[i][j].offset);
|
||||
keys[i][j].offset = rest_adc_value - analogReadPin(matrix_pins[i][j]);
|
||||
printf("Offset: %d\n", keys[i][j].offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user