code carte mega: (maitre)
char c;
#include <Wire.h>
void setup() {
Wire.begin(); // join i2c bus (address optional for master)
Serial.begin(9600); // start serial for output
Serial.print("Hello demanrrage MEGA");
}
void loop() {
Wire.requestFrom(8, 1);
while (Wire.available()) { // slave may send less than requested
c = Wire.read(); // receive a byte as character
Serial.print(c); // print the character
}
delay(50);
Wire.beginTransmission(8); // transmit to device #8
Wire.write("char is "); // sends five bytes
Wire.write(c); // sends one byte
Wire.endTransmission(); // stop transmitting
delay(50);
}
code carte nano: (esclave)
#include <Wire.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 4);
void setup() {
Wire.begin(8); // join i2c bus with address #8
Wire.onRequest(requestEvent); // register event
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600); // start serial for output
Serial.print("Hello demanrrage du nano");
mySerial.begin(9600);
}
void loop() {
delay(100);
}
void requestEvent() {
byte c;
if (mySerial.available())
{
c = mySerial.read();
}
else {
c = 0; //(Null char.)
}
Serial.print("Char :");
Serial.println((char)(c));
Wire.write(c);
}
void receiveEvent(int howMany) {
while (1 < Wire.available()) { // loop through all but the last
char d = Wire.read(); // receive byte as a character
Serial.print(d); // print the character
}
char e = Wire.read(); // receive byte as an integer
Serial.println(e); // print the integer
}