Comunicazione i2c Arduino uno <->mega 2560

Buonasera a tutti, mi chiamo Tommaso e vorrei realizzare un progetto basato sul protocollo i2c.
In particolare ho usato due schede Arduino (mega 2560 come master e uno come slave),
lo slave si occupa di "leggere" dei valori PWM (durata del livello logico alto in micro secondi) da una ricevente rc e spedirli al master mediante i2c.

Per adesso il master dovrebbe riceve i valori e visualizzarli sul monitor seriale (successivamente i dati dovranno essere elaborati).
Ma invece di stampare la durata leggo ad esempio "80 255" e modificando la posizione del potenziometro sulla trasmittente rc varia soltanto il primo dei due numeri.
Come riferimento ho usato la seguente guida: https://www.arduino.cc/en/Tutorial/MasterReader .
Allego il codice caricato sulle schede.
Master (mega 2560)

#include <Wire.h>

void setup() {
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
}

void loop() {
  Wire.requestFrom(8, 2);    // request 6 bytes from slave device #8

  while (Wire.available()) { // slave may send less than requested
    uint16_t c = Wire.read(); // receive a byte as character
    Serial.println(c);         // print the character
  }

  delay(500);
}

Slave (uno )

#include <EnableInterrupt.h>
#include <Wire.h>


#define SERIAL_PORT_SPEED 57600
#define RC_NUM_CHANNELS  2

#define RC_CH1  0
#define RC_CH2  1


#define RC_CH1_INPUT  A0
#define RC_CH2_INPUT  A1


uint16_t rc_values[RC_NUM_CHANNELS];
uint32_t rc_start[RC_NUM_CHANNELS];
volatile uint16_t rc_shared[RC_NUM_CHANNELS];

void rc_read_values() {
  noInterrupts();
  memcpy(rc_values, (const void *)rc_shared, sizeof(rc_shared));
  interrupts();
}

void calc_input(uint8_t channel, uint8_t input_pin) {
  if (digitalRead(input_pin) == HIGH) {
    rc_start[channel] = micros();
  } else {
    uint16_t rc_compare = (uint16_t)(micros() - rc_start[channel]);
    rc_shared[channel] = rc_compare;
  }
}

void calc_ch1() { calc_input(RC_CH1, RC_CH1_INPUT); }
void calc_ch2() { calc_input(RC_CH2, RC_CH2_INPUT); }


void setup() {
  Serial.begin(SERIAL_PORT_SPEED);

  pinMode(RC_CH1_INPUT, INPUT);
  pinMode(RC_CH2_INPUT, INPUT);
  Wire.begin(8);                // join i2c bus with address #8
  Wire.onRequest(requestEvent); // register event

  enableInterrupt(RC_CH1_INPUT, calc_ch1, CHANGE);
  enableInterrupt(RC_CH2_INPUT, calc_ch2, CHANGE);

}

void loop() {
  rc_read_values();

  //Serial.print("CH1:"); Serial.print(rc_values[RC_CH1]); Serial.print("\t");
 // Serial.print("CH2:"); Serial.print(rc_values[RC_CH2]); Serial.print("\t");
 

  delay(200);
}

void requestEvent() {
  Wire.write(rc_values[RC_CH1]); // respond with message of 6 bytes
  // as expected by master
}

Qualche idea su come riuscire a visualizzare correttamente l'output?
Grazie in anticipo, Tommaso.

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

Buongiorno, grazie per la risposta.

Mi scuso per la mancata presentazione ma erroneamente ero convinto di averla fatta, adesso dovrebbe essere tutto apposto.

Saluti, Tommaso.