summaryrefslogtreecommitdiff
path: root/main/sprayduck.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/sprayduck.c')
-rw-r--r--main/sprayduck.c60
1 files changed, 38 insertions, 22 deletions
diff --git a/main/sprayduck.c b/main/sprayduck.c
index 8619c3d..29f4461 100644
--- a/main/sprayduck.c
+++ b/main/sprayduck.c
@@ -1,25 +1,42 @@
#include "freertos/FreeRTOS.h"
+#include "network.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "hal/gpio_types.h"
#include <driver/gpio.h>
-#include "esp_wifi.h"
+#include <stdlib.h>
#include "hal/adc_types.h"
#include "esp_adc/adc_oneshot.h"
-#define LED_GPIO_PIN 22
+#define THRESHOLD 2000
+#define FLIP_GPIO_PIN 23
+#define SENSOR_GPIO_PIN 22
#define SENSOR_CHANNEL ADC_CHANNEL_7
#define TAG "sprayduck"
-static int adc_raw[10];
+
+int read_sensor(adc_oneshot_unit_handle_t handler) {
+ int sum = 0;
+ int i = 0;
+ for (i = 0; i < 5; i++) {
+ int value = 0;
+ ESP_ERROR_CHECK(adc_oneshot_read(handler, SENSOR_CHANNEL, &value));
+ ESP_LOGI(TAG, "ADC%d Channel[%d] Raw Data: %d", ADC_UNIT_1 + 1, SENSOR_CHANNEL, value);
+ sum += value;
+ }
+ return sum / 5;
+}
void app_main(void)
{
- bool led_state = false;
+ setup_network();
- gpio_reset_pin(LED_GPIO_PIN);
- gpio_set_direction(LED_GPIO_PIN, GPIO_MODE_OUTPUT);
+ gpio_reset_pin(FLIP_GPIO_PIN);
+ gpio_set_direction(FLIP_GPIO_PIN, GPIO_MODE_OUTPUT);
+
+ gpio_reset_pin(SENSOR_GPIO_PIN);
+ gpio_set_direction(SENSOR_GPIO_PIN, GPIO_MODE_OUTPUT);
adc_oneshot_unit_handle_t handler;
adc_oneshot_unit_init_cfg_t adc_config = {
@@ -32,28 +49,27 @@ void app_main(void)
adc_oneshot_chan_cfg_t channel_config = {
.bitwidth = ADC_BITWIDTH_DEFAULT,
.atten = ADC_ATTEN_DB_12,
-};
-
-ESP_ERROR_CHECK(adc_oneshot_config_channel(handler, SENSOR_CHANNEL, &channel_config));
-
-
-
-
+ };
+ ESP_ERROR_CHECK(adc_oneshot_config_channel(handler, SENSOR_CHANNEL, &channel_config));
+ gpio_set_level((gpio_num_t) FLIP_GPIO_PIN, 1);
while (1) {
- //ESP_LOGI("sprayduck", "Flipping LED - state %d!", led_state);
- if (led_state) {
- gpio_set_level((gpio_num_t) LED_GPIO_PIN, 0);
+ //Turn on sensor
+ gpio_set_level((gpio_num_t) SENSOR_GPIO_PIN, 1);
+ int value = read_sensor(handler);
+ ESP_LOGI("sprayduck", "Checking sensor value average %d", value);
+ if (value > THRESHOLD) {
+ ESP_LOGI("sprayduck", "Pouring water");
+ gpio_set_level((gpio_num_t) FLIP_GPIO_PIN, 0);
} else {
- gpio_set_level((gpio_num_t) LED_GPIO_PIN, 1);
+ ESP_LOGI("sprayduck", "Stopping the water");
+ gpio_set_level((gpio_num_t) FLIP_GPIO_PIN, 1);
}
-
- led_state = !led_state;
-ESP_ERROR_CHECK(adc_oneshot_read(handler, SENSOR_CHANNEL, &adc_raw[0]));
-ESP_LOGI(TAG, "ADC%d Channel[%d] Raw Data: %d", ADC_UNIT_1 + 1, SENSOR_CHANNEL, adc_raw[0]);
- vTaskDelay(1000 / portTICK_PERIOD_MS);
+ // Turn off Sensor
+ gpio_set_level((gpio_num_t) SENSOR_GPIO_PIN, 0);
+ vTaskDelay(43200000 / portTICK_PERIOD_MS);
}
}