Bonsoir, je pédale depuis quelques temps sur la l’affichage de data échangées entre un Nano et un Rpi via le bus I2C. Le Rpi et est master et le Nano slave. Je fais des tests pour un projet de balise météo pour un club de parapente. Pour faire court, le Rpi envoi un chiffre à l’arduino et l’arduno répond en fonction de ce chiffre mais pour l’heure le Rpi di qu’il reçoit 0 alors que le Nano envoi eutre chos. Je suppose donc que le Rpi ne parvient pas à lire ou convertir ce qui vient du Nano. du code pour le Nano :
"
#define DEBUG
#define Serial_DEBUG
#include <Wire.h>
#define SLAVE_ADDRESS 0x08
uint16_t dataReceived = 0;
int envoi = 0;
uint16_t i = 0;
void setup() {
Wire.begin(SLAVE_ADDRESS); // join i2c bus with address #8
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600); // start serial for output
// Wire.onRequest(sendData);
}
void loop() {
delay(1000);
#ifdef BEBUG
a++; Serial.print("----------- step :"); Serial.println(a);
#endif
}
void receiveEvent(int howMany) {
while(Wire.available()> 0) {
i = Wire.read();
switch(i){
case 4 :
Serial.print(" recu : ");Serial.println(i, DEC);
envoi = 5;
break;
case 10 :
Serial.print(" recu : ");Serial.println(i, DEC);
envoi = 8;
break;
default :
Serial.print(" recu : ");Serial.println(i, DEC);
envoi = 9;
}
// Wire.write(envoi);
Serial.print(" send : ");Serial.println(envoi, DEC);
}
}
void sendData(){
Wire.write(envoi);
envoi = 0;
}
"
et pour le Rpi :
"
#include <stdio.h>
#include <stdint.h>
#include <wiringPi.h>
#include <wiringPiI2C.h>
#include <time.h>
#define dataIn(a,b) ((a<<8)|b) // convertion 2 bytes to Int
int h = 14;
unsigned int i = 0;
//~ unsigned short int dataArray[2];
int main (void)
{
int fd;
fd = wiringPiI2CSetup(0x08);
while (1)
{
//dataArray[0] = (x >> 8) & 0xFF;
//dataArray[1] = x & 0xFF;
printf("value send : %d\n",h);
wiringPiI2CWrite(fd, h);
delay(1000);
i = wiringPiI2CRead(fd);
printf("Voici la valeur de i : %d\n", i);
i = 0;
}
// return 0;
}
"
Qu’en pensez vous, pouvez -vous m’aider s’il vous plait ?
Merci d’avance.
Cordialement,
FX