communication i2c RPi > Arduino

I2C.png

Commençons par remercier le tuto qui m'a permis de réussir la liaison RPi / Arduino https://www.pihomeserver.fr/2013/08/13/raspberry-pi-home-server-arduino-lier-les-deux-via-bus-i2c/

Le code côté Arduino pour le mettre en mode "esclave" sur le bus I2C :

  1. include <Wire.h>
  1. define SLAVE_ADDRESS 0x12

int dataReceived = 0;

void setup() {

   Serial.begin(9600);
   Wire.begin(SLAVE_ADDRESS);
   Wire.onReceive(receiveData);
   Wire.onRequest(sendData);

}

void loop() {

   delay(100);

}

void receiveData(int byteCount){

   while(Wire.available()) {
       dataReceived = Wire.read();
       Serial.print("Donnee recue : ");
       Serial.println(dataReceived);
   }

}

void sendData(){

   int envoi = dataReceived + 1;
   Wire.write(envoi);

}

Côté RPi, le code Python pour le paramétrer en mode "maître" I2C : import smbus import time

  1. Remplacer 0 par 1 si nouveau Raspberry

bus = smbus.SMBus(0) address = 0x12

print "Envoi de la valeur 3" bus.write_byte(address, 3)

  1. Pause de 1 seconde pour laisser le temps au traitement de se faire

time.sleep(1) reponse = bus.read_byte(address) print "La reponse de l'arduino : ", reponse