float temperature = getTemperature(); //lecture de la température et affection à la variable de type float
float humidity = getHumidity(); //lecture de l'humidité et affection à la variable de type float
data[0] = getTemperature(); //lecture de la température et affection à la variable de type float
data[1] = getHumidity();
Tu relis inutilement les capteurs 2 fois de suite. Et comme chaque acquisition prend 1 s, il serait préférable de faire ça:
float temperature = getTemperature(); //lecture de la température et affection à la variable de type float
float humidity = getHumidity(); //lecture de l'humidité et affection à la variable de type float
data[0] = Temperature(); //lecture de la température et affection à la variable de type float
data[1] = Humidity();
De ce que je comprends, l'Arduino est esclave sur le bus I²C. Donc il est bloqué parce qu'il reçoit des requêtes en permanence. Le problème serait plutôt du coté du Rasperry Pi qui doit faire des demandes trop rapprochées.
Edit: peut-être un autre problème. Ton attente d'une seconde est faite avec un delay du coup tu bloques tout pendant ce temps là. Ce n'est pas l'approche la plus efficace.
Il vaudrait mieux:
- lancer l'acquisition
- retourner dans la boucle principale
- revenir dans la fonction d'acquisition plus tard (au moins une seconde)
Séquence à rythmer en utilisant millis() qui n'est pas bloquante
A quelle fréquence fais-tu les acquisition?