Affichage LCD "flouté" par une liaison I2C entre arduino et RPI

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?