diff options
Diffstat (limited to 'main/sprayduck.c')
-rw-r--r-- | main/sprayduck.c | 60 |
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); } } |