From ad4cd34559cb743ce136f5810497606a9158390f Mon Sep 17 00:00:00 2001 From: marc Date: Tue, 6 May 2025 20:58:57 +0200 Subject: [PATCH] amelioration pir --- main/main.c | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/main/main.c b/main/main.c index 81d56eb..81b84c6 100644 --- a/main/main.c +++ b/main/main.c @@ -242,7 +242,11 @@ void alloc_fail(size_t size, uint32_t caps, const char * function_name){ } static QueueHandle_t gpio_evt_queue = NULL; -esp_timer_handle_t periodic_timer; +// Durée pour l'arret automatique (micro-secondes ^^) +uint64_t arretAuto=5*60*1000*1000; +bool ecranEteint=true; +// Ce timer permet d'eteindre l'ecran "arretAuto" apres la derniere présence détectée +esp_timer_handle_t presence_timer; static void IRAM_ATTR gpio_isr_handler(void* arg) { @@ -257,16 +261,23 @@ static void gpio_task_example(void* arg) for (;;) { if (xQueueReceive(gpio_evt_queue, &io_num, portMAX_DELAY)) { ESP_LOGE(TAG,"Got it !"); - for (int i = 0; i < 100; i++) - { - bsp_display_brightness_set(i); - vTaskDelay(delay/portTICK_PERIOD_MS); + if(ecranEteint){ + if(bsp_display_lock(0)){ + for (int i = 0; i < 100; i++) + { + bsp_display_brightness_set(i); + vTaskDelay(delay/portTICK_PERIOD_MS); + } + bsp_display_unlock(); + ecranEteint=false; + } + }else{ + ESP_LOGI(TAG, "Ecran déjà allumé"); } //On arrete le timer de presence - esp_timer_stop(periodic_timer); + esp_timer_stop(presence_timer); //Pour le redemarrer - ESP_ERROR_CHECK(esp_timer_start_once(periodic_timer, 10*1000*1000)); - + ESP_ERROR_CHECK(esp_timer_start_once(presence_timer, arretAuto)); } } } @@ -290,8 +301,8 @@ void initPirSensor(){ } -/* Ce timer permet d'eteindre l'ecran apres 30s de présence*/ -static void periodic_timer_callback(void* arg) +/* Ce timer permet d'eteindre l'ecran apres @arretAuto de présence*/ +static void presence_timer_callback(void* arg) { int64_t time_since_boot = esp_timer_get_time(); if(bsp_display_lock(0)){ @@ -401,13 +412,13 @@ static httpd_handle_t start_webserver(void) { void app_main(void) { const esp_timer_create_args_t periodic_timer_args = { - .callback = &periodic_timer_callback, + .callback = &presence_timer_callback, /* name is optional, but may help identify the timer when debugging */ .name = "presence" }; - ESP_ERROR_CHECK(esp_timer_create(&periodic_timer_args, &periodic_timer)); + ESP_ERROR_CHECK(esp_timer_create(&periodic_timer_args, &presence_timer)); /* Start the timers */ - ESP_ERROR_CHECK(esp_timer_start_once(periodic_timer, 30*1000*1000)); + ESP_ERROR_CHECK(esp_timer_start_once(presence_timer, 30*1000*1000)); initPirSensor();