IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Simuler une touche "Enter" sur un keypad 4x4


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut Simuler une touche "Enter" sur un keypad 4x4
    Bonjour à tous,

    Je débute sur l'Arduino et en langage C.

    Je suis confronté à un problème de compréhension lorsqu'on utilise un keypad 4x4.
    Comment simule t-on une touche "Enter" pour valider un code secret par exemple.

    Si je souhaite remplacer la touche # par "enter" comment dois-je m'y prendre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (key=='#')
          alors touche enter;
     
        else 
          lcd.print(key);
    En vous remerciant pour l'aide

  2. #2
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Je m'auto répond.

    Je viens de comprendre que dès que la suite de caractères tapée correspond à la condition, la suite est jouée sans appui d'une touche quelconque.

    Je n'ai donc pas besoin d'une simulation de touche "Enter".

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonjour Legrandse

    Tu réfléchis en mode OS. Sauf que tu n'as pas d'OS.
    Tu mets le code a effectuer suite à l'appuis sur Enter (ou # plus exactement) directement dans le if.

    Ou tu fais une boucle dont la condition de sortie c'est l'appuis sur la touche #. La boucle traitera l'arrivée des chiffres, leur mémorisation, et quand la boucle se quitte tu traites la suite (comparaison avec le code, ouverture ou non du verrou, etc...)

    Es-tu sûr que tu reçois directement les codes ASCII des touches pressées? As-tu une biblio qui fait cela?

    Bonne journée

    Delias

  4. #4
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Oui toutes les touches sont reconnues et l'écran LCD est bien configuré pour tout afficher.

    Par contre dans mon exemple avec un mot de passe "123" je ne vois pas comment éviter le message "Code incorrect" car la variable key ne peut contenir qu'un seul caractère sur le keypad (ce qui est logique)

    Donc dès que je tape "1" j'ai un code incorrect mais je ne vois pas comment lui faire attendre la suite.
    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
     
    char key = kpd.getKey();
     
        if (key != NO_KEY) {
     
        char code  = "123";
     
        lcd.print(key);
        delay(50);
        tone(buzzer,3000); // Send 1KHz sound signal...
        delay(30);        // 1000 for 1 sec
        noTone(buzzer);     // Stop sound...
     
     
          if (key == code){ 
          	lcd.clear();
            lcd.print("Code correct");
     
          }
          else{ 
          lcd.print("Incorrect.");
          delay(50);
          lcd.clear();
          lcd.print("Entrez code:"); 
          lcd.setCursor(0, 1);
          }
      }

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonjour Legrandse

    J'ai utilisé le mot magique 3x dans mon dernier message.
    A toi de chercher un peu... Ou t'as 0 de connaissance en algorithme?
    L'implémentation peut prendre des formes très différentes en fonction de ce que fait le muC à côté.

    Delias

  6. #6
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Arf décidément j'ai du mal

    Si je fait une boucle dont la condition de sortie est # je pense faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    char code  = '123';
     
        while (key != '#') {
           	lcd.print(key);
            delay(50);
            tone(buzzer,3000); // Send 1KHz sound signal...
            delay(30);        // 1000 for 1 sec
            noTone(buzzer);     // Stop sound...
              // ...for 1sec
        }
    Dans ce cas si j'appuie sur 1, il m'affiche à l'infini "1" puisque je suis dans void loop()
    Bref un peu paumé quand même...

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Non t'es dans: Réfléchis un peu plus, après avoir lu le premier caractère tu dois l'afficher, le mémoriser puis ... attendre qu'il (le premier caractère ) soit '#' c'est ce que tu fais!

    Delias

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Appuyer sur un bouton Webbrowser / simuler une touche
    Par antho0903 dans le forum VB.NET
    Réponses: 0
    Dernier message: 29/08/2012, 14h28
  2. Simuler une touche clavier
    Par micky13 dans le forum Langage
    Réponses: 9
    Dernier message: 17/04/2006, 20h08
  3. [Applet]simuler une touche clavier
    Par mat10000 dans le forum Interfaces Graphiques en Java
    Réponses: 19
    Dernier message: 12/12/2003, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo