Deux programme en parallèles

Bonjour à tous,

J'aimerais pouvoir exécuter deux programmes en parallèles. Je récupère des valeurs depuis deux capteurs, je veux afficher ces valeurs dans le moniteur tous les 10ms, et ces même valeurs sur un écran lcd tous les 500ms, je n'arrive pas à les exécuter indépendamment en même temps. Pouvez vous me guider. Merci d'avance.
Ci-joint le code

#include <LiquidCrystal.h>
float capteur1 = A0;
float capteur2 = A1;

LiquidCrystal lcd(11, 10, 5, 4, 3, 2);

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(3, 0);
  lcd.print ( "Open Stent") ;
  lcd.setCursor(4, 1);
  lcd.print ( "Solution") ;
  delay (1500);
  lcd.clear();
}

void loop() {
  float pression1 =  analogRead(capteur1) * 0.4535 - 16.48; // conversion capteur 1
  float pression2 = analogRead(capteur2) * 0.4535 - 16.48; // conversion capteur 2



  // Serial.print("Pression1 = "); // Affichage dans le moniteur
  Serial.print(pression1);
  Serial.print(" ,");
  //Serial.println(" mmHg");
  //Serial.print("Pression2 = ");
  Serial.println(pression2);
  //Serial.println(" mmHg");
  delay(10);


  lcd.setCursor(0, 0);
  lcd.print ("P1 = "); // Affichage sur écran lcd
  lcd.print (pression1);
  lcd.clear(); lcd.print ( " mmHg");
  lcd.setCursor(0, 1);
  lcd.print ("P2 = ");
  lcd.print (pression2);
  lcd.print( " mmHg");
  delay(2000);
  lcd.clear();
}

Bonjour,

Il faut utiliser millis()

#include <LiquidCrystal.h>

LiquidCrystal lcd(11, 10, 5, 4, 3, 2);

const byte capteur1 = A0;
const byte capteur2 = A1;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(3, 0);
  lcd.print ( "Open Stent") ;
  lcd.setCursor(4, 1);
  lcd.print ( "Solution") ;
  delay (1500);
  lcd.clear();
}

void loop() {
  static unsigned long lastMillisSerial = 0;
  static unsigned long lastMillisLcd = 0;

  if (millis() - lastMillisSerial >= 10)
  {
    lastMillisSerial = millis();

    float pression1 =  analogRead(capteur1) * 0.4535 - 16.48; // conversion capteur 1
    float pression2 = analogRead(capteur2) * 0.4535 - 16.48; // conversion capteur 2

    // Serial.print("Pression1 = "); // Affichage dans le moniteur
    Serial.print(pression1);
    Serial.print(" ,");
    //Serial.println(" mmHg");
    //Serial.print("Pression2 = ");
    Serial.println(pression2);
    //Serial.println(" mmHg");
    if (millis() - lastMillisLcd >= 500)
    {
      lastMillisLcd = millis();

      lcd.setCursor(0, 0);
      lcd.print ("P1 = "); // Affichage sur écran lcd
      lcd.print (pression1);
      lcd.clear(); lcd.print ( " mmHg");
      lcd.setCursor(0, 1);
      lcd.print ("P2 = ");
      lcd.print (pression2);
      lcd.print( " mmHg");
    }
  }
}
1 Like

Merci beaucoup, cela fonctionne.

Bonjour,
en principe, pour fluidifier, je mets :
else if (millis() - lastMillisLcd >= 500)
...

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