Bonjour,

Je n'arrive pas à remplacer la fonction delay par la fonction millis dans l'affichage du LCD. Je cherche à me dédouaner de la fonction delay afin de traitrer en temps réel l'ADC. Je dois traiter par un changement d'état, et je ne pige pas purquoi.???

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "MCP_ADC.h"
 
MCP3008 mcp1; // use HWSPI
 
LiquidCrystal_I2C lcd(0x38, 16, 2);
String text = "La tension sur le channel 0 est de : ";
unsigned long long prevMillis = 0; //variable sur 32 bits
unsigned long long tempo = 200;//fixe une tempo de 200 ms
 
bool State = LOW;
 
void setup()
{
  Serial.begin(9600);
 
  mcp1.begin(10);
 
  lcd.init();
  lcd.cursor_on();
  // lcd.blink_on();
  lcd.backlight();
 
  lcd.setCursor(2, 0);
  lcd.home();
}
 
void loop()
{
 
  float val = mcp1.analogRead(0);
  val = val * 5;
  val = val / 1000;
 
  if ((millis() - prevMillis) > tempo) {
    State = ! State;
 
 
    if (!State)
    {
      lcd.print("<<<");
      lcd.print(text);
      lcd.print(val);
      lcd.print(" volts");
      lcd.print(">>>");
 
 
      for (int a = 0; a < 55; a++)//permet de faire défiler le texte de droite à gauche
      {
        lcd.scrollDisplayLeft();
      }
    }
    prevMillis = millis();
  }
 
}