From c7abf18736ad2225cf0e36bce0bb5dfb2c7d3252 Mon Sep 17 00:00:00 2001 From: Erick Ahmed Date: Sat, 17 May 2025 13:16:13 +0200 Subject: [PATCH] Change data types regarding sensor readings and sensor/actuator pins from signed to unsigned --- firmware/atmega/include/moisture.h | 4 ++-- firmware/atmega/source/main.c | 3 +-- firmware/atmega/source/moisture.c | 13 ++++++------- firmware/atmega/source/pump.c | 6 ++---- 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/firmware/atmega/include/moisture.h b/firmware/atmega/include/moisture.h index fc48ca2..6b6afc8 100644 --- a/firmware/atmega/include/moisture.h +++ b/firmware/atmega/include/moisture.h @@ -45,7 +45,7 @@ extern volatile bool readSensors; void sensorsInit(void); void triggerMoistureRead(void); -int16_t moistureAverage(int8_t sensorPin); -int16_t moistureRead(void); +uint16_t moistureAverage(uint8_t sensorPin); +uint16_t moistureRead(void); #endif diff --git a/firmware/atmega/source/main.c b/firmware/atmega/source/main.c index b33c3cc..8cd6123 100644 --- a/firmware/atmega/source/main.c +++ b/firmware/atmega/source/main.c @@ -38,10 +38,9 @@ int main(void) { while(true) { if (readSensors) { - int16_t result = moistureRead(); + uint16_t result = moistureRead(); //espSend(VASE_NUM, result) } - triggerPump(PUMP_D7, 50); // if(espGet("ask if i need to water plants") == true) {waterPlant()} enterSleep(); } diff --git a/firmware/atmega/source/moisture.c b/firmware/atmega/source/moisture.c index 505f160..ee93366 100644 --- a/firmware/atmega/source/moisture.c +++ b/firmware/atmega/source/moisture.c @@ -21,22 +21,21 @@ void triggerMoistureRead(void) { readSensors = true; } -int16_t moistureAverage(int8_t sensorPin) { - int16_t sum = 0; - for (int i = 0; i < SENSOR_READINGS; i++) { +uint16_t moistureAverage(uint8_t sensorPin) { + uint16_t sum = 0; + for (uint8_t i = 0; i < SENSOR_READINGS; i++) { sum += adcRead(sensorPin); //TODO: implement variance check (if over a certain variance discard measurements for this cycle) - //TODO: maybe add a small delay using watchdog here? //TODO IMPORTANT: if value < 1 or > 1022, discard that measurement } return sum / SENSOR_READINGS; } -int16_t moistureRead(void) { +uint16_t moistureRead(void) { uint16_t overallSum = 0; - for (int8_t i = 0; i < SENSORS_NUM; i++) { - int16_t sensorAverage = moistureAverage(sensorPins[i]); + for (uint8_t i = 0; i < SENSORS_NUM; i++) { + uint16_t sensorAverage = moistureAverage(sensorPins[i]); //TODO: if a sensor gives 0, discard that sensor entirely (means it is disconnected or not working) overallSum += sensorAverage; } diff --git a/firmware/atmega/source/pump.c b/firmware/atmega/source/pump.c index 0e2d5f3..787793b 100644 --- a/firmware/atmega/source/pump.c +++ b/firmware/atmega/source/pump.c @@ -12,7 +12,7 @@ void pumpsInit(void) { DDRD |= actuatorMask; } -void triggerPump(int8_t pump_pin) { +void triggerPump(uint8_t pump_pin) { // Turn on pump PORTD |= (1 << pump_pin); @@ -24,9 +24,7 @@ void triggerPump(int8_t pump_pin) { } void waterPlant(void) { - for (int i=0; i < ACTUATORS_NUM; i++) { + for (uint8_t i=0; i < ACTUATORS_NUM; i++) { triggerPump(actuatorPins[i]); } - - }