Problème I2C avec NodeMCU ESP8266

Bonjour,
Communication I2c entre Arduino Méga (Emetteur qui envoie des bytes) et Nano (Récepteur)
Dans le Setup du Nano:

`Wire. Begin(I2C_SLAVE_ADDRESS);`
`Wire.onReceive(receiveEvents);`

`void receiveEvents()`
`{`
`Data = Wire. Read();`
 `Serial.println(DataB,BIN);`
 `}`

Cela fonctionne très bien mais si je remplace le Nano par un NodeMCU ESP8266 il refuse la compilation à void
receiveEvents().
Merci pour vos réponses

Envoie l'ensemble du message de compilation STP

exit status 1
no matching function for call to 'onReceive(void (&)())'

il semble que l' esp8266 ne puisse pas etre ' slave '.
Surveiller aussi la compatibilité des voltages.

Bonjour,
Pour les voltages j'utilise des convertisseurs de niveaux pour SDA et SCL.

https://forum.arduino.cc/t/i2c-communication-between-nodemcu-and-arduino-uno/534715/9

réplique #10

Ca c'est juste la fin du message : utilise le bouton à côté de la fenêtre du compilateur pour copier l'ensemble du message.

C'est juste : on le voit ici et il semble que rien n'ait été fait depuis 2017 à ce sujet :

Tu devrais utiliser un ESP32 au lieu d'un ESP8266.

Arduino : 1.8.19 (Windows 10), Carte : "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"





















C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Dominique\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Dominique\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Dominique\Documents\Arduino\libraries -fqbn=esp8266:esp8266:nodemcuv2:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,eesz=4M2M,led=2,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 -ide-version=10819 -build-path C:\Users\DOMINI~1\AppData\Local\Temp\arduino_build_13897 -warnings=all -build-cache C:\Users\DOMINI~1\AppData\Local\Temp\arduino_cache_867933 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.mkspiffs.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\3.0.4-gcc10.3-1757bed -prefs=runtime.tools.mkspiffs-3.0.4-gcc10.3-1757bed.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\3.0.4-gcc10.3-1757bed -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed -prefs=runtime.tools.xtensa-lx106-elf-gcc-3.0.4-gcc10.3-1757bed.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed -prefs=runtime.tools.python3.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\python3\3.7.2-post1 -prefs=runtime.tools.python3-3.7.2-post1.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\python3\3.7.2-post1 -prefs=runtime.tools.mklittlefs.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\mklittlefs\3.0.4-gcc10.3-1757bed -prefs=runtime.tools.mklittlefs-3.0.4-gcc10.3-1757bed.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\mklittlefs\3.0.4-gcc10.3-1757bed -verbose D:\00 _ Arduino\00 _ sketch\2022\02 _ Fevrier\02 _ Communication I2C\02 - Master Méga - Slave NodeMCU ESP8266\NodeMCU_02_Recepteur_I2C\NodeMCU_02_Recepteur_I2C.ino

C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Dominique\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Dominique\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Dominique\Documents\Arduino\libraries -fqbn=esp8266:esp8266:nodemcuv2:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,eesz=4M2M,led=2,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 -ide-version=10819 -build-path C:\Users\DOMINI~1\AppData\Local\Temp\arduino_build_13897 -warnings=all -build-cache C:\Users\DOMINI~1\AppData\Local\Temp\arduino_cache_867933 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.mkspiffs.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\3.0.4-gcc10.3-1757bed -prefs=runtime.tools.mkspiffs-3.0.4-gcc10.3-1757bed.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\3.0.4-gcc10.3-1757bed -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed -prefs=runtime.tools.xtensa-lx106-elf-gcc-3.0.4-gcc10.3-1757bed.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed -prefs=runtime.tools.python3.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\python3\3.7.2-post1 -prefs=runtime.tools.python3-3.7.2-post1.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\python3\3.7.2-post1 -prefs=runtime.tools.mklittlefs.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\mklittlefs\3.0.4-gcc10.3-1757bed -prefs=runtime.tools.mklittlefs-3.0.4-gcc10.3-1757bed.path=C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\tools\mklittlefs\3.0.4-gcc10.3-1757bed -verbose D:\00 _ Arduino\00 _ sketch\2022\02 _ Fevrier\02 _ Communication I2C\02 - Master Méga - Slave NodeMCU ESP8266\NodeMCU_02_Recepteur_I2C\NodeMCU_02_Recepteur_I2C.ino

Using board 'nodemcuv2' from platform in folder: C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2

Using core 'esp8266' from platform in folder: C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2

Detecting libraries used...

"C:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/include" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/lwip2/include" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897/core" -c -w -Werror=return-type -Os -g -free -fipa-pta -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -w -x c++ -E -CC -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10819 -DARDUINO_ESP8266_NODEMCU_ESP12E -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_NODEMCU_ESP12E\"" -DLED_BUILTIN=2 -DFLASHMODE_DIO -DESP8266 "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\cores\\esp8266" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\variants\\nodemcu" "C:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897\\sketch\\NodeMCU_02_Recepteur_I2C.ino.cpp" -o nul

Alternatives for Wire.h: [Wire@1.0]

ResolveLibrary(Wire.h)

  -> candidates: [Wire@1.0]

"C:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/include" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/lwip2/include" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897/core" -c -w -Werror=return-type -Os -g -free -fipa-pta -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -w -x c++ -E -CC -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10819 -DARDUINO_ESP8266_NODEMCU_ESP12E -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_NODEMCU_ESP12E\"" -DLED_BUILTIN=2 -DFLASHMODE_DIO -DESP8266 "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\cores\\esp8266" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\variants\\nodemcu" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\libraries\\Wire" "C:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897\\sketch\\NodeMCU_02_Recepteur_I2C.ino.cpp" -o nul

"C:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/include" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/lwip2/include" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897/core" -c -w -Werror=return-type -Os -g -free -fipa-pta -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -w -x c++ -E -CC -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10819 -DARDUINO_ESP8266_NODEMCU_ESP12E -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_NODEMCU_ESP12E\"" -DLED_BUILTIN=2 -DFLASHMODE_DIO -DESP8266 "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\cores\\esp8266" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\variants\\nodemcu" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\libraries\\Wire" "C:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\libraries\\Wire\\Wire.cpp" -o nul

Generating function prototypes...

"C:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/include" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/lwip2/include" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897/core" -c -w -Werror=return-type -Os -g -free -fipa-pta -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -w -x c++ -E -CC -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10819 -DARDUINO_ESP8266_NODEMCU_ESP12E -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_NODEMCU_ESP12E\"" -DLED_BUILTIN=2 -DFLASHMODE_DIO -DESP8266 "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\cores\\esp8266" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\variants\\nodemcu" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\libraries\\Wire" "C:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897\\sketch\\NodeMCU_02_Recepteur_I2C.ino.cpp" -o "C:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897\\preproc\\ctags_target_for_gcc_minus_e.cpp"

"C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897\\preproc\\ctags_target_for_gcc_minus_e.cpp"

Compilation du croquis...

"C:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\python3\\3.7.2-post1/python3" -I "C:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/signing.py" --mode header --publickey "D:\\00 _ Arduino\\00 _ sketch\\2022\\02 _ Fevrier\\02 _ Communication I2C\\02 - Master Méga - Slave NodeMCU ESP8266\\NodeMCU_02_Recepteur_I2C/public.key" --out "C:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897/core/Updater_Signing.h"

"C:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/include" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/lwip2/include" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897/core" -c -Wall -Wextra -Werror=return-type -Os -g -free -fipa-pta -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -MMD -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10819 -DARDUINO_ESP8266_NODEMCU_ESP12E -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_NODEMCU_ESP12E\"" -DLED_BUILTIN=2 -DFLASHMODE_DIO -DESP8266 "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\cores\\esp8266" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\variants\\nodemcu" "-IC:\\Users\\Dominique\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\libraries\\Wire" "C:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897\\sketch\\NodeMCU_02_Recepteur_I2C.ino.cpp" -o "C:\\Users\\DOMINI~1\\AppData\\Local\\Temp\\arduino_build_13897\\sketch\\NodeMCU_02_Recepteur_I2C.ino.cpp.o"

D:\00 _ Arduino\00 _ sketch\2022\02 _ Fevrier\02 _ Communication I2C\02 - Master Méga - Slave NodeMCU ESP8266\NodeMCU_02_Recepteur_I2C\NodeMCU_02_Recepteur_I2C.ino: In function 'void setup()':

NodeMCU_02_Recepteur_I2C:129:33: error: no matching function for call to 'onReceive(void (&)())'

In file included from D:\00 _ Arduino\00 _ sketch\2022\02 _ Fevrier\02 _ Communication I2C\02 - Master Méga - Slave NodeMCU ESP8266\NodeMCU_02_Recepteur_I2C\NodeMCU_02_Recepteur_I2C.ino:19:

C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\Wire/Wire.h:79:10: note: candidate: 'void TwoWire::onReceive(void (*)(int))' (near match)

   79 |     void onReceive(void (*)(int));      // arduino api

      |          ^~~~~~~~~

C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\Wire/Wire.h:79:10: note:   conversion of argument 1 would be ill-formed:

NodeMCU_02_Recepteur_I2C:129:20: error: invalid conversion from 'void (*)()' to 'void (*)(int)' [-fpermissive]

In file included from D:\00 _ Arduino\00 _ sketch\2022\02 _ Fevrier\02 _ Communication I2C\02 - Master Méga - Slave NodeMCU ESP8266\NodeMCU_02_Recepteur_I2C\NodeMCU_02_Recepteur_I2C.ino:19:

C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\Wire/Wire.h:80:10: note: candidate: 'void TwoWire::onReceive(void (*)(size_t))' (near match)

   80 |     void onReceive(void (*)(size_t));   // legacy esp8266 backward compatibility

      |          ^~~~~~~~~

C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\Wire/Wire.h:80:10: note:   conversion of argument 1 would be ill-formed:

NodeMCU_02_Recepteur_I2C:129:20: error: invalid conversion from 'void (*)()' to 'void (*)(size_t)' {aka 'void (*)(unsigned int)'} [-fpermissive]

Utilisation de la bibliothèque Wire version 1.0 dans le dossier: C:\Users\Dominique\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\Wire 

exit status 1

no matching function for call to 'onReceive(void (&)())'

type or paste code here

C'est quand même bizarre cette histoire, car quand je regarde sur le github du Core ESP8266, je trouve la bibliothèque Wire qui a bien une méthode onReceive, illustrée par un exemple.

Est-ce que tu peux :

Si tu regardes bien les prototypes des méthodes de TwoWire :

   void onReceive(void (*)(int));      // arduino api
    void onReceive(void (*)(size_t));   // legacy esp8266 backward compatibility
    void onRequest(void (*)(void));

Les deux méthodes onReceive() prennent un pointeur de fonction ayant un paramètre, donc la fonction receiveEvents() doit aussi avoir un paramètre.

Selon cette page :

La com I2C entre 2 ESP8266 fonctionne depuis la version 2.5.0 du core ESP8266 (2019). Donc, ça marchera peut-être si tu le mets à jour dans le gestionnaire de cartes de l'IDE.

C'est juste !

J'ajoute : même si ce paramètre n'est pas utilisé, comme dans ton exemple précédent :

void receiveEvent(size_t howMany) {

  (void) howMany;
  while (1 < Wire.available()) { // loop through all but the last
    char c = Wire.read(); // receive byte as a character
    Serial.print(c);         // print the character
  }
  int x = Wire.read();    // receive byte as an integer
  Serial.println(x);         // print the integer
}

Bonjour,
J'ai testé cela, après la ligne (void) howmany;
j'ai voulu afficher dans le moniteur série pour être sur que cela fonctionné mais rien!!

Est-ce que tu peux poster tes codes en entier, parce que là on joue un peu aux devinettes depuis 15 messages...?

Voici le code Mega 2560 Pro mini (master) et le code simplifié du NodeMCU (slave)

  //----------------------------------------------------------------------------------------------------------
  //  H A R D W A R E   -   M E G A
  //  
  //  Communication I2C (Master)
  //  Rev:  1.0
  //
  //
  //----------------------------------------------------------------------------------------------------------
  //
  //  SDA       20
  //  SCL       21
  //   
  //----------------------------------------------------------------------------------------------------------
  //  0 1   -   S E T U P
  //  0 2   -   L O O P
  //----------------------------------------------------------------------------------------------------------  

    #include <Wire.h>    

    #define PAYLOAD_SIZE 2
        
    #include <LiquidCrystal.h>                            //  Afficheur
    LiquidCrystal lcd(26, 25, 24, 23, 22, 19);

    const int16_t I2C_SLAVE = 0x0B;
            
  //----------------------------------------------------------------------------------------------------------
  //  V A R I A B L E S
  //----------------------------------------------------------------------------------------------------------

    byte i;
    byte j;
    char Dat[15];

    byte OldDataA = 254;
    byte OldDataB = 254;
    byte DataA = 0;
    byte DataB = 0;
    byte Data;

    byte Row;                                             //  Aff
    byte Zon;                                             //  Aff
    byte Val;                                             //  Aff
    byte Pos;                                             //  Aff
    byte Bit_Dat;                                         //  Aff   

    int Compteur; 

    byte Valid = 0;
    byte Act = 9;
    byte Count = 0;
              
  //----------------------------------------------------------------------------------------------------------
  //  0 1   -   S E T U P
  //----------------------------------------------------------------------------------------------------------

  void setup()
  {
    Wire.begin();
    
    Serial.begin (57600);
    
    Serial.println ("Mega Master");
    delay (1000);

    lcd.begin(15, 2);                                     // utilisation d'un écran 16 colonnes et 2 lignes
    delay(10);

    for (byte j = 32; j <= 47;)                           //  Pins zones INPUT
    {
      pinMode(j, INPUT);
      j++;
    }
          
    pinMode(18, OUTPUT);                                  //  Retro
    digitalWrite(18, HIGH);                               //  Retro ON
  
    Compteur = 0;     
  }

  //----------------------------------------------------------------------------------------------------------
  //  W I R E   T R A N S M I T
  //----------------------------------------------------------------------------------------------------------

  void Wire_Trabsmit()
  {
    Count++;
    Wire.beginTransmission(I2C_SLAVE); 
    Wire.write(Data);
    Serial.print(F("sending value : "));
    Serial.println(Data);
    if (Count == 3)
    {
      Serial.println("");
      Count = 0;        
    }                      
    Wire.endTransmission();   
  }
  
  //----------------------------------------------------------------------------------------------------------
  //  D A T A A   -   C O N S T R U C T I O N   -   A F F I C H A G E
  //----------------------------------------------------------------------------------------------------------

  void CA_Data()
  {
    i = 0;
    for (j = 32; j <= 39;)
    {
      Dat[i] =  digitalRead(j) << i;
      DataA = Dat[7] | Dat[6] | Dat[5] | Dat[4] | Dat[3] | Dat[2] | Dat[1] | Dat[0];
      j++;
      i++;
      delay(10);
    }

    if (DataA != OldDataA)
    {
            
      digitalWrite(18, HIGH);                             // Retro ON
      Valid = 1;
      
      Compteur = 0;
      Pos = 8;                                            //Position curseur
      Bit_Dat = 0;                                        //Numero Bit
      Zon = 0;

        while (Bit_Dat <= 7)
        {
          Val = bitRead(DataA, Bit_Dat);
          lcd.setCursor(Pos, 0);

            if (Val == 0)
            {
              lcd.print("-");
            }
            else
            {
              lcd.print(Zon, HEX);
            }

              delay(1);

              Pos = Pos + 1;
              Bit_Dat = Bit_Dat + 1;
              Zon = Zon + 1;

          }
    OldDataA = DataA;                                    
    }
    
  
    i = 8;
    for (j = 40; j <= 47;)
    {
      Dat[i] =  digitalRead(j) << i - 8;
      DataB = Dat[15] | Dat[14] | Dat[13] | Dat[12] | Dat[11] | Dat[10] | Dat[9] | Dat[8];
      j++;
      i++;
      delay(10);
    }

    if (DataB != OldDataB)
    {      
      digitalWrite(18, HIGH);                             // Retro ON
      Valid = 1;
      
      Compteur = 0;    
      Zon = 8;        
      Pos = 8;                                            //Position curseur
      Bit_Dat = 0;                                        //Numero Bit
      
        while (Bit_Dat <= 7)
        {
          Val = bitRead(DataB, Bit_Dat);
          lcd.setCursor(Pos, 1);

            if (Val == 0)
            {
              lcd.print("-");
            }
            else
            {
              lcd.print(Zon, HEX);
            }

              delay(1);

              Pos = Pos + 1;
              Bit_Dat = Bit_Dat + 1;
              Zon = Zon + 1;
        }
    OldDataB = DataB;
    }
  }
      
  //----------------------------------------------------------------------------------------------------------
  //  L O O P
  //----------------------------------------------------------------------------------------------------------

  void loop() 
  {
    CA_Data();

    if (Valid == 1)
    {
      Data = DataA;      
      Wire_Trabsmit();      
      delay(1000);

      Data = DataB;      
      Wire_Trabsmit();      
      delay(1000);
      
      Data = Act;      
      Wire_Trabsmit();      
      delay(2000);
      
      Valid = 0;
    }
              
    delay(200);
    Compteur++;
        
    if (Compteur == 100)
    {
      digitalWrite(18, LOW);                        //  Retro OFF                
    }                          
  }


  //----------------------------------------------------------------------------------------------------------
  //  H A R D W A R E   -   N O D E M C U   -   R E C E P T E U R
  //  
  //  Communication I2C 
  //  Rev:  1.0
  //
  //
  //----------------------------------------------------------------------------------------------------------
  //
  //----------------------------------------------------------------------------------------------------------
  //  0 2   -   S E T U P
  //  0 3   -   L O O P
  //----------------------------------------------------------------------------------------------------------  

    #include <Wire.h>

    #define SDA_PIN D1
    #define SCL_PIN D2

    const int16_t I2C_SLAVE = 0x0B;    

  //----------------------------------------------------------------------------------------------------------
  //  V A R I A B L E S
  //----------------------------------------------------------------------------------------------------------

    byte DataA;
    byte DataB;
    int Data;
    byte Act;
    byte Count = 0;
    
    byte Val;
    int n = 0;

    int numBytes;

  //----------------------------------------------------------------------------------------------------------
  //  0 1   -   R E C E I V E E V E N T S
  //----------------------------------------------------------------------------------------------------------
  
    void receiveEvents (size_t howMany)
    {
      (void) howMany;
      Serial.println ("OK");
    }

  //----------------------------------------------------------------------------------------------------------
  //  0 2   -   S E T U P
  //----------------------------------------------------------------------------------------------------------

  void setup()
  {
    Wire.begin(SDA_PIN, SCL_PIN, I2C_SLAVE);
     
    Serial.begin (9600);
    Serial.println ("");
    Serial.println ("NodeMCU Esclave");
    Serial.println ("");
              
    Wire.onReceive(receiveEvents);
  }

  //----------------------------------------------------------------------------------------------------------
  //  0 2   -   L O O P
  //----------------------------------------------------------------------------------------------------------

  void loop()
  {          
    delay(10);
  }


Tes deux ESP sont connectés a deux PC différents ? C'est normal que tu mettes des valeurs différentes pour Serial.begin ?

Oui deux PC , mais il s'agit d'un ESP (Slave) et d'un méga pro (Master)

Et 'rien' ça veut dire que rien ne s'affiche dans la console?

Sur le Master ou le Slave?
Moi il s'affiche dans les deux, je dois juste faire un reset sur le NodeMCU