Comunicazione tra 2 Arduino Mega

Buongiorno a tutti,
mi chiamo Daniele e da parecchio tempo vi seguo. Mi sono da poco addentrato nel mondo di arduino e ne sono rimasto affascinato. Così ho pensato di mettere su un “progettino”.
In pratica sto costruendo un sistema di automazione per semplificare la manutezione e la gestione quotidiana del mio acquario.
In pratica con il primo arduino mega+shield ethernet gestisco i relè per accendere le luci, le pompe, ecc… e la parte ethernet sarà dedicata ad un controllo remoto.
Il secondo arduino mega è equipaggiato con un shield touchscreen per il controllo del sistema in locale.
Leggendo in giro ho visto che è possibile farli comunicare con il protocollo I2C e la libreria Wire.h.
Quì mi sono bloccato, in pratica quando metto le istruzioni wire nel mio programma la compilazione non va mai a buon fine. Mi viene riportato il seguente errore:

Gestione_acquario_tastiera_e_eth.ino: In function ‘void setup()’:
Gestione_acquario_tastiera_e_eth.ino:81:18: error: ‘receiveEvent’ was not declared in this scope
Gestione_acquario_tastiera_e_eth.ino:82:18: error: ‘requestEvent’ was not declared in this scope

ho provato in vari modi (per disperazione) a mettere e togliere le variabili, cambiare i nomi dentro le parentesi, ma ogni volta nessun risultato.
Qualcuno ha qualche aiuto da darmi?
anticipatamente grazie a tutti.
Daniele

Gestione_acquario_tastiera_e_eth.ino (11.1 KB)

Direi che mancano le due funzioni receiveEvent() e requestEvent().

void requestEvent(){
  
}


void receiveEvent (){
  
}

es

#include <Wire.h>

void setup(){
  Wire.begin(2);              
  Wire.onRequest(requestEvent);
  Wire.onReceive(receiveEvent);
}

void loop(){
  delay(100);
}


void requestEvent(){
  Wire.write("hello "); 
}

void receiveEvent(){
  while(1 < Wire.available()){
    char c = Wire.read(); 
    Serial.print(c);        
  }
  int x = Wire.read();   
  Serial.println(x);       
}

Anzitutto scusami se non ti risposto prima ma di domenica con il bambino è sempre impegnativo fare le prove con Arduino. Comunque ti devo ringraziare, la compilazione viene eseguita senza problemi. Stasera mi metto a fare un pò di prove e ti faccio sapere se va tutto il resto. Grazie di tutto.

Ciao,
sto ancora tentando di far funzionare almeno la compilazione per il protocollo i2c ma al momento senza risultati apprezzabili.
In pratica superato il primo problema che mi hai indicato sono incappato in un secondo, ovvero una parentesi graffa da chiudere che manca, ma facendo le varie prove non riesco a trovare dove possa mancare. Allegando lo sketch avresti voglia di dargli un’occhiata?
Inoltre non conoscendo bene il protocollo sto scopiazzando a destra e sinistra su internet per adattare al mio scopo. Questo implica che non conosco alcuni passaggi o istruzioni che vado a copiare. Ad esempio nelle istruzioni da te postate risulta che void receiveEvent(){ è vuoto tra le parentesi tonde, mentre in altre istruzioni su internet ho visto che contiene int data, sulle istruzioni ufficiali arduino invece c’è int howMany.
Mi sapresti indicare le differenze?

Gestione_acquario_tastiera_e_eth.ino (11.9 KB)