keypad + ecran lcd arduino

keypad + ecran lcd arduino

Bientôt disponible

2 réponses à “keypad + ecran lcd arduino”

  1. Bonjour; je réalise pour mon projet de fin d’année un système de sécurité avec arduino uno, et c’est presque le même matériels que ceux de la photo, et je veux voir le code que vous utilisez

    • Je n’ai malheureusement pas encore eu le temps de réaliser l’ensemble des articles que je souhaite (le temps est une denrée rare).
      Je peut cependant peut-être vous éclairé en vous donnant en « preview » une partie du code 🙂

      #include 
      #include 
      #include 
      
      /*===================================================================================================*/
      /* Initialisations des peripheriques */
      /*===================================================================================================*/
       
      boolean etatAlarm = 1;
      boolean alertAlarm = 0;
      
      
      /*
        -----------------------------------------------------------------------------------------------------
        INITIALISE KEYPAD
        -----------------------------------------------------------------------------------------------------
        - Initialisation du nombre de caractere saisi (pour le LCD et le rester password)
        - Initialisation du nombre de lignes et colones
        - Initialisation de la matrice du pave num
        - Initialisation des pins utilises
        - Initialisation du pave num
      */
      Password password = Password( "1234" );
      
      const byte ROWS = 4; //four rows
      const byte COLS = 3; //three columns
      char keys[ROWS][COLS] = {
        {'1','2','3'},
        {'4','5','6'},
        {'7','8','9'},
        {'*','0','#'}
      };
      byte rowPins[ROWS] = {35, 30, 31, 33}; //connect to the row pinouts of the keypad
      byte colPins[COLS] = {34, 36, 32}; //connect to the column pinouts of the keypad
      
      Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
      
      
      /*
        -----------------------------------------------------------------------------------------------------
        INITIALISE LCD
        -----------------------------------------------------------------------------------------------------
         - Definition de la pin RX utilise pour le controle du LCD
         - Initialisation du LCD
      */
      #define txPin 16
      SoftwareSerial LCD = SoftwareSerial(0, txPin);
      const int LCDdelay=10;  // conservative, 2 actually works
      
      
      
      /*
        -----------------------------------------------------------------------------------------------------
         FONCTION - GESTION DU KEYPAD
        -----------------------------------------------------------------------------------------------------
        - Fonction d'affichage des * sur le LCD
        - Fonction d'affichage du menu error
        - Fonction d'affichage du menu unlock
        - Fonction check password
        - Fonction de traitement des touches du keypad
        */
      void MenuKeypad(int numberKey){
        clearLCD();
        lcdPosition(0,0);
        LCD.print("Security Code:");     
        if(numberKey>4) MenuError();
       
        if(!numberKey){
          lcdPosition(1,0);
          LCD.print("_ _ _ _");  
        }else if(numberKey==1){
          lcdPosition(1,0);
          LCD.print("* _ _ _");  
        }else if(numberKey==2){
          lcdPosition(1,0);
          LCD.print("* * _ _");  
        }else if(numberKey==3){
          lcdPosition(1,0);
          LCD.print("* * * _");  
        }else if(numberKey==4){
          lcdPosition(1,0);
          LCD.print("* * * *");  
        }
      }
      
      void MenuError(){
        password.reset();
        clearLCD();
        lcdPosition(0,0); 
        LCD.print("Error Code");
        Serial.println("ERROR");  
        delay(500);
        backlightOff();
        delay(200);
        backlightOn();
        delay(500);
        MenuKeypad(0);
      }
      
      void MenuUnlock(){
        if(alertAlarm){
            alertAlarm = 0;
        }
        etatAlarm = !etatAlarm;    
        password.reset();
        clearLCD();
        lcdPosition(0,0); 
        LCD.print("Valid Code");  
        Serial.println("Valid Code");
        delay(1000);
        MenuKeypad(0);
      }
      
      void checkPassword(){
        if (password.evaluate()) MenuUnlock();
        else MenuError();
      }
      
      void keypadEvent(KeypadEvent eKey){
        switch (keypad.getState()){
          case PRESSED:
            Serial.print("Pressed: ");
            Serial.println(eKey);
            switch (eKey){
             case '*': checkPassword(); break;
             case '#':
               password.reset();
               MenuKeypad(0);
             break;
             default: 
               password.append(eKey);
               MenuKeypad(password.nbchar());
             break;
            }
        }
      }
      
      
      /*===================================================================================================*/
      /* SETUP - Initialisation de l'arduino */
      /*===================================================================================================*/
      
      void setup()
      {
        /* LCD ---------------------- */
        
        //Initialisation de l'etat du controleur LCD
        pinMode(txPin, OUTPUT);
        
        //Demarrage de la connection au LCD
        LCD.begin(9600);
        
        //Retroeclairage On
        backlightOn();
        
        //Menu keypad unlock
        MenuKeypad(0);
        
        //add an event listener for the keypad
        keypad.addEventListener(keypadEvent);
      }
      
      
      /*===================================================================================================*/
      /* BOUCLE - traitement de l'arduino */
      /*===================================================================================================*/
      
      void loop()
      {
        //Keypad
        keypad.getKey();
      
        // TFT
        tftTouch(tftInterface);
      }
      

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partenaires

Cekome Graal Network Panoramaweb