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)
...
system
Closed
November 5, 2021, 8:23pm
5
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.