2 Messages sur 1 LCD

Bonjour,
Je voudrais afficher 2 messages sur un écran LCD, qui alternent toutes les 5 secondes tout en continuant d’autres actions dans la boucle (détection de tag RFiD ou saisie d’un code). J’ai essayé de créer une autre boucle à l’intérieur mais je ne peux exécuter d’autres actions une fois la boucle terminée, je ne peux pas l’interrompre.
Merci d’avance
Mat

mets nous ton code ( entre balises ) voir

Tu mesures le temps comment ?

Blinkwithoutdelay

pas de code, pas de chocolat

Désolé pour la reponse tardive mais je n’y pensais plus, voici mon code, le message que je veux faire clignoter est au début de la boucle void. J’ai enlevé une petite partie pas tres importante sinon le poste est trop long !

 /*  CONTROLE D'ACCES PORTE FONCTIONNEL, PROGRAMME A TELEVERSER APRES MODIFICATION !!!
  * Read a card using a mfrc522 reader on your SPI interface  
  * Pin layout should be as follows (on Arduino Uno):  
  * MOSI: Pin 51  
  * MISO: Pin 50  
  * SCK: Pin 52  
  * SS: Pin 53  
  * RST: Pin 5
  */  
  
#include <Password.h>
#include <LiquidCrystal.h>
#include <Keypad.h>
#include <SPI.h>  
#include <RFID.h>  

 
 #define SS_PIN 53  
 #define RST_PIN 46  
 RFID rfid(SS_PIN,RST_PIN);  
 int serNum[5];  

LiquidCrystal lcd(45, 44, 43, 42, 41, 40);

int RedLed = 47;
int GreenLed = 49;
int BlueLed = 48;

Password password =("166451");

int count=0;
String newPasswordString;
char newPassword[6];

byte currentPasswordLenght = 0;

const byte ROWS = 4;
const byte COLS = 3;

char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'P','0','R'}
};
byte rowPins[ROWS] = {36, 35, 34, 33};
byte colPins[COLS] = {39, 38, 37};
 

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

long portPushButton = 7;
long etatPushButton = HIGH;

byte coche[8] = {
  0b00000,
  0b00001,
  0b00001,
  0b00010,
  0b10010,
  0b10100,
  0b01100,
  0b01000
};

 void setup(){  

  lcd.createChar(0, coche);
  pinMode (portPushButton, INPUT);
 
  pinMode(32, INPUT);
  pinMode(RedLed, OUTPUT);
  pinMode(GreenLed, OUTPUT);
  pinMode(BlueLed, OUTPUT);
    digitalWrite(BlueLed, HIGH);
    delay(200);
        digitalWrite(BlueLed, LOW);
        digitalWrite(RedLed, HIGH);
    delay(200);
        digitalWrite(RedLed, LOW);
        digitalWrite(GreenLed, HIGH);
    delay(200);
        digitalWrite(GreenLed, LOW);
        digitalWrite(RedLed, HIGH);
    delay(200);
        digitalWrite(RedLed, LOW);
        digitalWrite(BlueLed, HIGH);
  
  lcd.begin(16,2);
  lcd.print(" Initialisation");
    delay(600);
  lcd.setCursor(0,1);
  lcd.print("-");
        
     digitalWrite(GreenLed, HIGH);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(" Initialisation");
  lcd.setCursor(0,1);
  lcd.print("   terminee");
  lcd.setCursor(13,1);
  lcd.write(byte(0));
  delay(2000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("    Debut du");
  lcd.setCursor(0,1); 
  lcd.print("controle d'acces");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(" Verouillage de");
  lcd.setCursor(0,1); 
  lcd.print("    la porte");

  digitalWrite(RedLed, LOW);
    delay(100);
  digitalWrite(RedLed, HIGH);
    delay(100);
  digitalWrite(RedLed, LOW);
    delay(100);
  digitalWrite(RedLed, HIGH);
    delay(100);
  digitalWrite(RedLed, LOW);
    delay(100);
  digitalWrite(RedLed, HIGH);
    delay(100);
  digitalWrite(RedLed, LOW);
    delay(100);
  digitalWrite(RedLed, HIGH);
    delay(100);
  digitalWrite(RedLed, LOW);
    delay(100);
  digitalWrite(RedLed, HIGH);
    delay(100);
  digitalWrite(RedLed, LOW);
    delay(100);
  digitalWrite(RedLed, HIGH);
    delay(100);
  digitalWrite(RedLed, LOW);
    delay(100);
  digitalWrite(RedLed, HIGH);
    delay(100);
  digitalWrite(RedLed, LOW);
    delay(100);
  digitalWrite(RedLed, HIGH);
    delay(100);
  digitalWrite(RedLed, LOW);
    delay(100);
  digitalWrite(RedLed, HIGH);
    delay(100);
  digitalWrite(RedLed, LOW);
    delay(100);
  digitalWrite(RedLed, HIGH);
    delay(100);
  digitalWrite(RedLed, LOW);
     delay(100);
  digitalWrite(RedLed, HIGH);
  digitalWrite(BlueLed, LOW);
  lcd.clear();
  delay(1000);
  
    lcd.setCursor(0,0);
    lcd.print("Entrez code ou");
    lcd.setCursor(0,1);
    lcd.print("presentez carte");
  
  Serial.begin(9600);  
  SPI.begin();  
  rfid.init();  
 }  


 
 void loop(){

  
    lcd.setCursor(0,0);
    lcd.print("Entrez code ou");
    lcd.setCursor(0,1);
    lcd.print("presentez carte");
    delay(1000);
    lcd.setCursor(0,0);
    lcd.print("Chambre de Matys");
    lcd.setCursor(0,1);
    lcd.print(" Controle acces");
    delay(1000);

  
  
{ etatPushButton = digitalRead(portPushButton);

  if (etatPushButton == LOW)
    { digitalWrite(RedLed, LOW);
      digitalWrite(GreenLed, HIGH);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Acces interieur");
      lcd.setCursor(0,1);
      lcd.print("Ouverture porte");
      delay(5000);
      digitalWrite(GreenLed, LOW);
      digitalWrite(RedLed, HIGH);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Entrez code ou");
      lcd.setCursor(0,1);
      lcd.print("presentez carte");
 } 
    
else { digitalWrite(GreenLed, LOW); }
}
  if(rfid.isCard()){  
   if(rfid.readCardSerial()) {  
    Serial.println("The tag's number is  : ");
    Serial.print(rfid.serNum[0],BIN);  
    Serial.print(" ");  
    Serial.print(rfid.serNum[1],BIN);  
    Serial.print(" ");  
    Serial.print(rfid.serNum[2],BIN);  
    Serial.print(" ");  
    Serial.print(rfid.serNum[3],BIN);  
    Serial.print(" ");  
    Serial.print(rfid.serNum[4],BIN);  
    Serial.println(""); }

    if(rfid.serNum[0] == 6) {
      Serial.print("Carte OK!\n");
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("   Carte OK !");
      lcd.setCursor(0,1);
      lcd.print(" Acces autorise");
      digitalWrite(RedLed, LOW);
      digitalWrite(GreenLed, HIGH);
      delay(5000);
      digitalWrite(RedLed, HIGH);
      digitalWrite(GreenLed, LOW);
        lcd.setCursor(0,0);
  lcd.print("Entrez code ou");
  lcd.setCursor(0,1);
  lcd.print("presentez carte");
  }
 
    else{
      Serial.print("Carte REFUSEE!\n");
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Carte non valide");
      lcd.setCursor(0,1);
      lcd.print("  Acces refuse");
   digitalWrite(RedLed, LOW);
   digitalWrite(GreenLed, LOW);
   delay(250);
   digitalWrite(RedLed, HIGH);
   digitalWrite(GreenLed, LOW);
   delay(250);
   digitalWrite(RedLed, LOW);
   digitalWrite(GreenLed, LOW);
   delay(250);
   digitalWrite(RedLed, HIGH);
   digitalWrite(GreenLed, LOW);
   delay(250);
   digitalWrite(RedLed, LOW);
   digitalWrite(GreenLed, LOW);
   delay(250);
   digitalWrite(RedLed, HIGH);
   digitalWrite(GreenLed, LOW);
   delay(250);
   lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Entrez code ou");
  lcd.setCursor(0,1);
  lcd.print("presentez carte"); 
  }
    
  }
  
  char key = keypad.getKey();
  
  if (key != NO_KEY) {
    lcd.setCursor(0,0);
    lcd.print("Code :          ");
    switch (key) {
    case 'R': checkPassword();
    break;
    case 'P': resetPassword();
    break;
    default: processNumberKey(key);
    }
    }
  
   rfid.halt(); 
}
void processNumberKey(char key) {
  lcd.setCursor(count,1);
  lcd.print("*                    ");
  currentPasswordLenght++;
  password.append(key);
  count++;
}


void checkPassword() {
  if (password.evaluate()) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Code OK");
    lcd.setCursor(0,1);
    lcd.print("Acces accepte");
       digitalWrite(RedLed, LOW);
       digitalWrite(GreenLed, HIGH);
    delay(2000);
    count=0;

   digitalWrite(RedLed, HIGH);
   digitalWrite(GreenLed, LOW);

  }

else {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Code faux");
    lcd.setCursor(0,1);
    lcd.print("Acces refuse");

   digitalWrite(RedLed, LOW);
   digitalWrite(GreenLed, LOW);
   delay(250);
   digitalWrite(RedLed, HIGH);
   digitalWrite(GreenLed, LOW);
   delay(250);
   digitalWrite(RedLed, LOW);
   digitalWrite(GreenLed, LOW);
   delay(250);
   digitalWrite(RedLed, HIGH);
   digitalWrite(GreenLed, LOW);
   delay(250);
   digitalWrite(RedLed, LOW);
   digitalWrite(GreenLed, LOW);
   delay(250);
   digitalWrite(RedLed, HIGH);
   digitalWrite(GreenLed, LOW);
   delay(250);
   
      count=0;
}
   resetPassword();

}

void resetPassword() {
  password.reset();
  currentPasswordLenght = 0;
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Entrez code ou");
  lcd.setCursor(0,1);
  lcd.print("presentez carte");
  count=0;


 rfid.halt(); 

  
}