Problème rafraichissement variable

Bonjour j'ai fait un programme pour un capteur de température et je l'affiche sur un écran LCD munit de bouton et le problème c'est que quand je l'affiche en °C ,Kelvin ou fahrenheit elle est pas actualiser en temps réel ''c'est une ancienne valeur'' je suis obligé de re appuyer sur le bouton pour l'actualiser et sa indéfiniment. Auriez vous une solution merci d'avance :wink:

#include <Wire.h>
#include <Adafruit_RGBLCDShield.h>
Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
#define WHITE 0x7

int temperatureC=0 ;
int temperature=0 ;
int temperatureK=0 ;
int temperatureF=0 ;


void setup() {
  
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setBacklight(WHITE);
  lcd.print("Capteur De");
  lcd.setCursor(0,1);
  lcd.print("Temperature");
  delay(1000);
  lcd.clear();
  
}

uint8_t i=0;
void loop() {
  
  lcd.setCursor(0, 1);
  
  temperature = analogRead(A0);
  temperatureC = temperature/2.048-273;
  temperatureK = temperature/2.048; 
  temperatureF = temperatureC*1.8+32 ;

  Serial.println("Temperature(ºC): ");
  Serial.println(temperatureC);
  Serial.println("  Temperature(ºK): ");
  Serial.println(temperatureK);
  Serial.println("  Temperature(ºF): ");
  Serial.println(temperatureF);

  uint8_t buttons = lcd.readButtons();

  if (buttons) {
    lcd.clear();
    lcd.setCursor(0,0);
    if (buttons & BUTTON_UP) {
      lcd.print(temperatureF);
      lcd.setBacklight(WHITE);
    }
    if (buttons & BUTTON_DOWN) {
      lcd.print("DOWN ");
      lcd.setBacklight(WHITE);
    }
    if (buttons & BUTTON_LEFT) {
      lcd.print(temperatureC);
      lcd.setBacklight(WHITE);
    }
    if (buttons & BUTTON_RIGHT) {
      lcd.print(temperatureK);
      lcd.setBacklight(WHITE);
    }
    if (buttons & BUTTON_SELECT) {
      lcd.setBacklight(WHITE);
    }
  }
}


Le capteur de température, c'est pour vérifier que la variable est bien rafraichie ?
Ok, je sors... :grin:

1 Like

Tu dois utiliser une variable supplémentaire qui stocke le bouton enfoncé. Par exemple

En global :
int numBouton = 0;

Puis dans le code :

    if (buttons & BUTTON_UP) {
      numBouton = 0;
    }
    if (buttons & BUTTON_DOWN) {
     numBouton = 1;
    }
    if (buttons & BUTTON_LEFT) {
      numBouton = 2;
    }
    if (buttons & BUTTON_RIGHT) {
      numBouton = 3;
    }
    if (buttons & BUTTON_SELECT) {
      numBouton = 4;
    }

Note que ces tests sont déjà dans un bloc qui teste if (buttons) { donc pas besoin de le retester : tu peux faire if (BUTTON_UP) {, etc.

Ensuite, en dehors de ton bloc if (buttons) {, tu affiches la bonne variable en fonction du numéro du bouton stocké :

if (numBouton == 0) {
      lcd.print(temperatureF);
      lcd.setBacklight(WHITE);
    }
else if (numBouton == 1) {
... etc ...

Ca devrait marcher mieux.

1 Like

D'accord merci beaucoup !!!!! :grin:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.