gas_sensor

gas sensor project
git clone _git@git.tontus.eu/gas_sensor.git
Log | Files | Refs

commit aadaa89dc7bdee43839e0f8f4a8eb34874256c51
parent 29802bf51a1760c02e4b8ee4dfaed156ca1d694f
Author: Tonton <tonterface@proton.me>
Date:   Thu,  9 Jul 2026 15:18:06 +0200

Implement decide properly

Diffstat:
Msrc/sensor.cpp | 22++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/sensor.cpp b/src/sensor.cpp @@ -10,6 +10,7 @@ #define SAMPLE_NUMBER 10 #define SENSOR_NUMBER 1 #define INTERVAL_NUMBER 3 +#define SAMPLE_RATE 500 enum { SENSOR_1 = 26, @@ -25,7 +26,7 @@ struct interval { /* function definitions*/ static int *read_series(int sensor); -static int find_interval(int *series, int sensor); +static int find_interval(int *series, int sensor, int *result); static int in_range(int num, int u_lim, int l_lim); static int get_average(int *series); static int decide_result(int *ser); @@ -69,7 +70,7 @@ read_series(int sensor) ser[i] = sensor_read(sensor); Serial.print(ser[i]); Serial.print("\n\r"); - delay(500); + delay(SAMPLE_RATE); } return ser; } @@ -101,9 +102,9 @@ get_average(int *series, int size) return avg; } -/* find which interval of a specific sensor an int is in */ +/* finds which of a sensors intervals an int is in */ static int -find_interval(int in, int sensor) +find_interval(int in, int sensor, int *result) { struct interval *ivl= NULL; int u_lim, l_lim = 0; @@ -114,6 +115,7 @@ find_interval(int in, int sensor) u_lim = ivl[i].upper_limit; if (in_range(in, u_lim, l_lim)) { Serial.print("In interval: "); + result[i]++; } else { Serial.print("Not in interval: "); } @@ -127,8 +129,10 @@ find_interval(int in, int sensor) static int decide_result(int *ser) { - /* testing */ - return 1; + for (int i = 0; i < INTERVAL_NUMBER; i++) { + printf("Interval %i: %i\n", i + 1, ser[i]); + } + return 0; } void @@ -157,6 +161,7 @@ int sensor_analyze(void) { int *ser, *tmp, res, avg; + int result[INTERVAL_NUMBER] = { 0 }; ser = tmp = NULL; res = avg = 0; @@ -169,10 +174,11 @@ sensor_analyze(void) goto out_free_ser; } avg = get_average(ser, SAMPLE_NUMBER); - tmp[i] = find_interval(avg, i); + find_interval(avg, i, result); } - res = decide_result(tmp); + res = decide_result(result); + out_free_ser: free(ser);