Go Down

Topic: 2 Messages sur 1 LCD (Read 226 times) previous topic - next topic

MatMatApp

Feb 25, 2016, 11:14 pm Last Edit: Feb 25, 2016, 11:23 pm by MatMatApp
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

dfgh

mets nous ton code  ( entre balises ) voir

BrUnO14200

Tu mesures le temps comment ?
Mes montages d'Arduino : http://nonoduino.blogspot.fr/

B83s


dfgh

pas de code, pas de chocolat

MatMatApp

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 !


Code: [Select]
/*  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();

  
}


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy