problème de variable (String , Char)

salut,

je souhaite réaliser une liaison I2C entre une arduino et une Raspberry Pi.
le problème est que je crée un tableau de “char” pour le transmettre, cela fonctionne une fois seulement toutes les autres fois mon tableau na plus les bonnes valeurs.

Voici le code et le moniteur série qui vous aiderons à comprendre, (je ne suis pas très claire)

#include <Wire.h>

char data[]= {};// mon tableau à envoyer
int i =0;
String donnees;
int humsol=50;
int humair=20;

void setup()
{
  Serial.begin(9600);
  Wire.begin(0x12);        // addresse 0x12          
  Wire.onRequest(sender);
}

void loop()
{
  donnees="";                //je vide le String donnees
  donnees =String(humsol);
  donnees += " ";            // et je le remplis 
  donnees += String(humair);
  Serial.println(donnees);   // cela me donne 1 fois string = "50 20"
  donnees.toCharArray(data,6); // je le tranforme en tableau de char
  Serial.println(data);      // cela me donne 1 fois char = "50 20"
  delay(100);
}

void sender()
{

  Wire.write(data1[i]);   // envoi du tableau sur 5 byte
  i++;
  if(i>=5) i=0;
}

Pourquoi n'envoies-tu pas simplement les int séparés par un espace via Serial.print(), sans passer par String ?

salut, Le but est, au final, de les faire passer en I2C. Les affichages Serial sont là pour le débogage.

La déclaration du tableau data ne spécifie pas la taille de celui-ci. En l'état, c'est juste un pointeur sans aucune réservation d'espace pour stocker du contenu. A minima, il faudrait écrire:

char data[6];

Merci, ça marche beaucoup mieux :slight_smile: