Je bricole un petit peu sur Arduino et depuis quelques jours j'apprends à utiliser des ESP32. J'utilise les exemples que l'on trouve dans l'IDE et des infos glanées sur le net.
En fait j'essaie (sans succès pour le moment) d'avoir une petite application qui configurerait l'esp32 pour aller en sommeil profond après une initialisation.
Elle devrait se réveiller une fois par jour, vérifier l'état de la batterie d'alimentation, si elle est faible, m'envoyer un e-mail (ça ça fonctionne bien)
Elle devrait aussi se réveiller lorsqu'une touche est pressée sur un clavier 4x3... sans perdre quelle touche vient d'être pressée et c'est là où je bute un peu... J'arrive a faire fonctionner cette partie sur un UNO avec la librairie "keypad" mais ça ne fonctionne pas sur l'ESP32.
J'ai donc, encore une fois regardé les exemples et configuré sept PINS de l'ESP32 qui peuvent réveiller l'ESP32... ça, ça fonctionne bien... Un test pour voir si il détecte deux pins en même temps, et ça fonctionne aussi.
Pour faire du nettoyage de code avant d'aller plus loin, je voulais utiliser les définitions que l'on trouve dans GPIO.h, qui est inclus dans drivers/rtc_io.h qui sont par exemple GPIO_SEL_13... mais lors de la compilation l'IDE me dit que ces variables ne sont pas définies et je ne comprends pas, elles devraient normalement être inclues....
Quelqu'un aurait-il une idée sur pourquoi ça ne passe pas ??
Mais il est ajouté bien sûr... j'ai même tenté de rajouter GPIO.h directement mais ça ne change rien.... Y-a-t'il un moyen d'avoir un "debug" là dessus durant la compilation ?
L'exemple pour le deep sleep mode fonctionne nickel, je voulais juste faire plus "propre" dans mon code car j'ai ajouté pas mal de lignes de code, je perds la mémoire et je rajoute beaucoup de commentaires pour le cas ou je devrais y retourner plus tard.
J'ai trouvé sur le web qu'il y a des définitions GPIO_SEL_xx qui sont équivalentes à BUTTON_PIN_BITMASK(GPIO_NUM_xx) je ne comprends juste pourquoi je ne peux pas utiliser ces définitions là (elles sont dans gpio.h qui est sensé être chargé par rtc_io.h
J'utilise l'IDE 2.3.3 sur Mac Intel, Sonoma, 64Go de RAM, 2To de ssd... ça devrait être bon, c'est la première fois que j'ai ce genre de souci
Voici le début de rtc_io.h, gpio.h est bien inclus
/*
* SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#pragma once
#include <stdint.h>
#include <stdbool.h>
#include "esp_err.h"
#include "soc/soc_caps.h"
#include "hal/rtc_io_types.h"
#include "driver/gpio.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Determine if the specified GPIO is a valid RTC GPIO.
*
* @param gpio_num GPIO number
* @return true if GPIO is valid for RTC GPIO use. false otherwise.
*/
bool rtc_gpio_is_valid_gpio(gpio_num_t gpio_num);
#define RTC_GPIO_IS_VALID_GPIO(gpio_num) rtc_gpio_is_valid_gpio(gpio_num)
#if SOC_RTCIO_PIN_COUNT > 0
je n'ai jamais eu à utiliser directement ce driver/rtc_io.h ni "driver/gpio.h"
si vous faites un code tout simple de 3 lignes avec l'include de gpio.h et des Serial print pour les variables / define qui vous intéresse, est-ce que ça compile et fonctionne ?
comme ce sont des define, il faudrait vérifier si un autre include ne fait pas des undef sur ces noms...
Je vais essayer de voir si j’arrive à trouver les compte-rendus de la compilation.
J’ai remarqué qu’il y a un sac de fichiers gpio.h dans les librairies cachées sur mon mac, peut-être qu’il faut un #define quelconque pour inclure le bon gpio .h.
J’ai inclus dans mon code les #define qui m’intéressaient et le code tourne bien à présent et il est plus lisible. C’est déjà ça
Par contre j’aimerais bien comprendre pourquoi le fichier include ne charge pas ou pourquoi le mauvais se charge…
Je connais peu Arduino mais les fichiers esp idf du même nom (comme driver/gpio.h) sont différents de ceux utilisés par Arduino. Les fichiers esp idf n'ont pas ces définitions. Ce n'est qu'une piste.