Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

code clavier en C



  1. #1
    bibax76

    code clavier en C


    ------

    bonjour
    aujourd'hui j'ai mon programme qui marche lorsque j’appuie sur une touche je voudrais maintenant remplacer l’appuie de cette touche par une code
    if (touche == 0x05 )
    {
    PORTCbits.RC1 = alim_stock;
    alim_stock = ! alim_stock;
    lcd_goto_xy(0,2);
    if(alim_stock== 0)
    {
    lcd_goto_xy(0,2);
    lcd_puts(" USB alimentee ");
    }
    {
    PORTCbits.RC1 = alim_stock;
    alim_stock = ! alim_stock;
    lcd_goto_xy(0,2);
    if(alim_stock== 0)
    {
    lcd_goto_xy(0,2);
    lcd_puts(" USB alimentee ");
    }
    voici le morceau de programme aujourd'hui
    j'ai essayer en mettant
    if (touche == 0x05 & 0x06)
    mai cela ne marche pas
    si quelqu'un a une idée je suis preneur

    -----

  2. Publicité
  3. #2
    bibax76

    Re : code clavier en C

    je me suis trompé dans le programme actuel
    le voici
    if (touche == 0x05 )
    {
    PORTCbits.RC1 = alim_stock;
    alim_stock = ! alim_stock;
    lcd_goto_xy(0,2);
    if(alim_stock== 0)
    {
    lcd_goto_xy(0,2);
    lcd_puts(" USB alimentee ");
    }

  4. #3
    PA5CAL

    Re : code clavier en C

    Bonjour

    Ta question n'est pas claire. Un code, c'est un numéro. De quoi parles-tu au juste ?

    Par ailleurs, cette discussion aurait plus sa place dans le forum Informatique. Ici, c'est le forum électronique (avec les transistors, les leds, les condensateurs, tout ça...).

    .
    Dernière modification par PA5CAL ; 16/06/2011 à 16h40.

  5. #4
    freepicbasic

    Re : code clavier en C

    char SvgTouche;

    if ( (touche == 0x06 ) && (SvgTouche== 0x05 ))
    {
    }
    SvgTouche=touche ;
    A+, pat

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    freepicbasic

    Re : code clavier en C

    Avec la suite "567"


    char SvgTouche1;
    char SvgTouche2;

    if ( (touche == 0x07 ) && (SvgTouche1== 0x06 ) && (SvgTouche2== 0x05 ))
    {
    // Ouvereture du code "567"
    }
    // Sauver les 2 touches précédentes
    SvgTouche2=SvgTouche1 ;
    SvgTouche1=touche ;
    A+, pat

  9. #6
    freepicbasic

    Re : code clavier en C

    ne pas oublier le debouncing pour bien saisir une seule touche à la fois.
    A+, pat

  10. Publicité
  11. #7
    PA5CAL

    Re : code clavier en C

    S'il s'agit bien de la saisie d'un code au clavier, il faudrait préciser les conditions de validité de ce qui est tapé.

    Par exemple, si l'on attend « 456 », le fait de taper « 123456 » remplit-il la condition ?

  12. #8
    freepicbasic

    Re : code clavier en C

    Citation Envoyé par PA5CAL Voir le message
    S'il s'agit bien de la saisie d'un code au clavier, il faudrait préciser les conditions de validité de ce qui est tapé.

    Par exemple, si l'on attend « 456 », le fait de taper « 123456 » remplit-il la condition ?
    dans mon exemple OUI !
    Mais comme on a pas d'explications ...
    Sinon il faut prevoir une touche de validation et un compteur etc...
    A+, pat

  13. #9
    freepicbasic

    Re : code clavier en C

    dans mon exemple 2 c'est :
    « 1234567 »
    A+, pat

  14. #10
    PA5CAL

    Re : code clavier en C

    ( En fait, la question s'adressait à bibax76. )

    Il existe de multiples réponses possibles. Par exemple, la saisie d'un code de sécurité peut aussi être réalisée sans touche de validation, mais avec un contrôle du temps de saisie et un blocage temporaire en cas d'erreur de code.

    Bref, le besoin doit être précisé.

  15. #11
    bibax76

    Re : code clavier en C

    excuser de l'attente
    je voudrais en faire taper un code de 2 ou 3 chiffre exemple
    "456"
    mai je ne voudrais pas que cela marche lorsque je tape
    "123456"
    donc pourquoi pas une touche de validation exemple
    "#"
    j'essaye vos exemple avec le svgtouche
    et vous redit cela
    merci

  16. #12
    PA5CAL

    Re : code clavier en C

    Tu n'en dis pas encore assez, notamment dans quel contexte la saisie des touches s'effectue (si le clavier sert à autre chose par exemple) et ce qui se passe après la saisie d'un bon code ou d'un mauvais code.

    Quoi qu'il en soit, voici un exemple, qui fonctionne sur le principe d'un automate :
    Code:
    #define NB_CHIFFRES 3
    char CODE[] = {TOUCHE1,TOUCHE2,TOUCHE3};
    
    {
    
        // boucle d'attente du code
        etat = 0;
        while (1)
        {
            touche = lit_clavier();
    
            if (touche == TOUCHE_VALIDER)
            {
                if (etat == NB_CHIFFRES)
                {
                    PORTCbits.RC1 = alim_stock;
                    alim_stock = ! alim_stock;
                    lcd_goto_xy(0,2);
                    if(alim_stock== 0)
                    {
                        lcd_goto_xy(0,2);
                        lcd_puts(" USB alimentee ");
                    }
    
                    // sortie de boucle après code bon
                    ...
                    break;
                }
    
                // sortie de boucle après code erroné
                ...
                break;
            }
            else
            {
                if (etat<NB_CHIFFRES)
                {
                    if (touche != CODE[etat])
                        etat = NB_CHIFFRES;
                }
                if (etat<127)
                    etat++;
            }
        }
    }

  17. Publicité
  18. #13
    bibax76

    Re : code clavier en C

    donc mon clavier sert a simuler un bouton poussoir avec le chiffre 1 et le chiffre 0
    et le code clavier fait varier un port du pic
    je ne comprend pas certain termer dans le programme que tu ma fourni
    exemple

    #define NB_CHIFFRES 3
    char CODE[] = {TOUCHE1,TOUCHE2,TOUCHE3};

    etat = 0;
    while (1)
    {
    touche = lit_clavier();

    if (touche == TOUCHE_VALIDER)
    {
    if (etat == NB_CHIFFRES)

    en faite appuie sur la touche 1 je bascule 2 port (RA0 RA1)
    Appuie sur le bouton 0 bascule RC1
    Code bascule RC1

  19. #14
    PA5CAL

    Re : code clavier en C

    Citation Envoyé par bibax76 Voir le message
    en faite appuie sur la touche 1 je bascule 2 port (RA0 RA1)
    Appuie sur le bouton 0 bascule RC1
    Code bascule RC1
    Je ne comprends pas ce que tu écris. Fais des phrases complètes.

    Si tu utilises un clavier pour entrer en code numérique avec une touche de validation, j'imagine que tu disposes :
    - soit de 4 sorties d'activation et 4 entrées de lecture d'état (pour un clavier matricé 4x4)
    - soit de 11 entrées (1 entrée par touche)
    - soit d'une solution intermédiaire.

    Quoi qu'il en soit, la lecture de l'état du clavier doit être traitée d'une manière ou d'une autre pour produire un code de touche tout en évitant les rebonds et les appuis simultanés sur plusieurs touches.

    J'ai donc fait l'hypothèse que cette opération était réalisée par la fonction « lit_clavier() » qui attend qu'on appuie sur une touche pour en retourner le code.

    « TOUCHE_VALIDER » correspond au code de touche retourné quand on appuie sur la touche de validation (#).

    « NB_CHIFFRES » donne le nombre de chiffres composant le code (ici égal à 3), et « TOUCHE1 », « TOUCHE2 » et « TOUCHE3 » correspondent aux codes des trois touches du code secret à saisir.

  20. #15
    bibax76

    Re : code clavier en C

    jarive a faire fonctionner le deuxième programme de freepicbasic
    Il marche quand je lui mes un code de 3 chiffres mes code de 4 sa marche pas
    je rajoute bien le char SvgTouche3;

  21. #16
    freepicbasic

    Re : code clavier en C

    Citation Envoyé par bibax76 Voir le message
    jarive a faire fonctionner le deuxième programme de freepicbasic
    Il marche quand je lui mes un code de 3 chiffres mes code de 4 sa marche pas
    je rajoute bien le char SvgTouche3;
    Il s'agit d'une pile, alors sauver en premier le 3ièm c'est en fait un décalage des 3 touches reçus.
    Sinon la méthode avec le buffer de pas5cal est mieux si on met plus de chiffres

    / Sauver les 3 touches précédentes
    SvgTouche3=SvgTouche2 ;
    SvgTouche2=SvgTouche1 ;
    SvgTouche1=touche ;
    A+, pat

Discussions similaires

  1. montage clavier à code portail CAME
    Par zzzleos dans le forum Bricolage et décoration
    Réponses: 3
    Dernier message: 11/11/2010, 20h41
  2. [Divers] Notice de clavier à code CAME S7000
    Par gren38 dans le forum Dépannage
    Réponses: 4
    Dernier message: 29/07/2010, 21h48
  3. saisie d'un code (clavier numérique)
    Par Galdon dans le forum Électronique
    Réponses: 1
    Dernier message: 09/03/2008, 15h24
  4. encodeur clavier, pic16F877 et code en C !!
    Par Voltron dans le forum Électronique
    Réponses: 15
    Dernier message: 27/04/2007, 20h09
  5. code delphi + touche clavier
    Par KHEOPS1982 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 15/06/2006, 14h37
Découvrez nos comparatifs produits sur l'informatique et les technologies.