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

pic + bouton poussoir ne fonctionne pas !!!



  1. #1
    little01

    pic + bouton poussoir ne fonctionne pas !!!


    ------

    alors voilà j'ai écris mon programme pour allumer une led avec un bouton poussoir mais celui ci ne fonctionne pas !!

    le voici: écris sous mikroc

    Code:
    #define LED PORTB.RB7 // LED sur la pin_b7
    #define BOUTONPOUSSOIR PORTB.RB6 // interrupteur sur la pin_b6
    
    void main(void) //fonction principal (main)
    {
    
    LED = 0;
    BOUTONPOUSSOIR = 1;
    
       while(1) // boucle infinie
       {
              if (BOUTONPOUSSOIR=1) //Si état logique haut sur le pin de l'interrupteur
                     {
                               delay_ms(80);   // anti rebonds
                               LED = 1; //mise de la LED à l'état de "1" (sallume)
    
                     }
              else // sinon
                      LED = 0; // on met en haute impédance
       }
    }
    si vous pouviez m'aider

    merci d'avance

    -----
    Dernière modification par gienas ; 12/01/2011 à 17h32. Motif: Ajouté les balises code nécessaires pour les programmes

  2. Publicité
  3. #2
    Tryph

    Re : pic + bouton poussoir ne fonctionne pas !!!

    salut

    premier soucis, tu n'as visiblement pas configuré les pins du PORTB.

    je sais plus si elle sont configurées en entrée ou en sortie d'origine (dans le doute je configure toujours celles que j'utilise), mais faut au moins s'assurer que RB6 est en entrée et que RB7 est en sortie.

    d'ailleurs, utiliser RB6 et RB7, ca me parait pas très judicieux. ce sont les 2 pins qui servent a programmer l'µC... autant en prendre d'autres pour ton appli... enfin là, c'est comme tu préfères

  4. #3
    laurentnic

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Bonjour

    if (BOUTONPOUSSOIR==1) mettre deux = dans les test

    cordialement

    Laurent

  5. #4
    Forhorse

    Re : pic + bouton poussoir ne fonctionne pas !!!

    par defaut les ports sont en entrée (c'est logique, c'est une position de "securité")

    Ta tempo d'anti rebond ne sert à rien. C'est pas elle qui va empêcher un rebond. Il faut faire un second test de l'entrée à l'issue de la tempo.

  6. A voir en vidéo sur Futura
  7. #5
    little01

    Re : pic + bouton poussoir ne fonctionne pas !!!

    voilà j'ai corrigé j'ai enlevé l'anti rebond,j'ai modifié boutonpoussoir==,et défini aussi la pin d'entrée et de sortie si je me suis pas trompé

    voici le code modifié


    Code:
    #define LED PORTB.RB7 // LED sur la pin_b1
    #define BOUTONPOUSSOIR PORTB.RB6 // interrupteur sur la pin_b2
    
    void main(void) //fonction principal (main)
    {
    
    TRISB = 0b01000000;
    LED = 0;
    BOUTONPOUSSOIR = 1;
    
       while(1) // boucle infinie
       {
              if (BOUTONPOUSSOIR==1) //Si état logique haut sur le pin de l'interrupteur
                     {
    
                               LED = 1; //mise de la LED à l'état de "1" (sallume)
    
                     }
              else // sinon
                      LED = 0; // on met en haute impédance
       }
    }
    j'ai mis en rouge ce que j''ai corrigé et si ma correction est juste !!??

    merci d'avance et oui j'ai oublié je débute dans la prog
    Dernière modification par gienas ; 12/01/2011 à 17h33. Motif: Ajouté les balises code nécessaires pour les programmes

  8. #6
    Forhorse

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Mettre tout en sortie c'est pas très prudent si tu n'en a pas besoin (un court circuit est si vite arrivé)
    ecris plutôt TRISB = 0b01111111
    et ta ligne "BOUTONPOUSSOIR = 1;" ne sert a rien vu que c'est une entrée.
    ton commentaire à la ligne "LED = 0; // on met en haute impédance" est faux, tu ne met pas à l'état haute impedance, tu met simplement à l'état bas

  9. Publicité
  10. #7
    little01

    Re : pic + bouton poussoir ne fonctionne pas !!!

    merci de votre aide c'est vraiment très très gentil sa faisait plusieurs jours que j'arrivais pas à finalisé mon petit projet

    j'ai recorrigé


    Code:
    #define LED PORTB.RB7 // LED sur la pin_b7
    #define BOUTONPOUSSOIR PORTB.RB6 // interrupteur sur la pin_b6
    
    void main(void) //fonction principal (main)
    {
    
    TRISB = 0b01111111;
    
    LED = 0;
    
    
       while(1) // boucle infinie
       {
              if (BOUTONPOUSSOIR==1) //Si état logique haut sur le pin de l'interrupteur
                     {
    
                               LED = 1; //mise de la LED à l'état de "1" (sallume)
    
                     }
              else // sinon
                      LED = 0; // on met à l'état bas (étteinte)
       }
    }
    encore merci c'est sympa !!!

  11. #8
    thundertom

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Salut,

    est-ce-que au niveau hardware tu as prévu des pull-up ou pull-down?

    Si ce n'est pas le cas, il faut utilisé les pull-up interne du PIC, pour autant qu'une pression sur le bouton tire à la masse.
    Fabricando fit faber

  12. #9
    little01

    Re : pic + bouton poussoir ne fonctionne pas !!!

    ah non je n'ai pas du tout prévu des pull-up ou pull-down ! et je ne savais pas qu'il fallait celà pour des boutons poussoirs ,merci de l'info!

    pourrais tu peux me dire comment il faut faire ?

    merci de ton aide

  13. #10
    DAUDET78

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Résistance de 10K entre la broche du PIC et le Vss (bouton entre broche du PIC et le Vdd)
    OU
    Résistance de 10K entre la broche du PIC et le Vdd (bouton entre broche du PIC et le Vss)
    J'aime pas le Grec

  14. #11
    Forhorse

    Re : pic + bouton poussoir ne fonctionne pas !!!

    OU
    vu qu'on est sur le port B, effacer le bit RBPU# (en ecrivant par exemple OPTION_REG = 0b01111111) et bouton entre broche du PIC et le Vss

  15. #12
    thundertom

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Citation Envoyé par little01 Voir le message
    ah non je n'ai pas du tout prévu des pull-up ou pull-down ! et je ne savais pas qu'il fallait celà pour des boutons poussoirs ,merci de l'info!

    pourrais tu peux me dire comment il faut faire ?

    merci de ton aide
    Tadam!!!!!
    j'admets, j'ai triché...j'ai subtilisé discrètement la boule de cristal de Daudet =)
    Fabricando fit faber

  16. Publicité
  17. #13
    DAUDET78

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Citation Envoyé par thundertom Voir le message
    j'admets, j'ai triché...j'ai subtilisé discrètement la boule de cristal de Daudet
    Ah la vache ! J'ai passé l'après midi à la chercher ........
    J'aime pas le Grec

  18. #14
    little01

    Re : pic + bouton poussoir ne fonctionne pas !!!

    merci de votre aide

    mais celà ne marche toujours pas pourtant avec votre aide le programme doit être bond !!

    j'ai mis le schéma peut être que sa vient de là, par contre j'ai pas indiqué le quartz ni le + mclr avec sa résistance



    merci d'avance

  19. #15
    Forhorse

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Ni indiqué l'alim...
    A savoir que 11 et 32 doivent être relié ensemble
    et idem pour 12 et 31.

    Sinon, quand un programme ne marche pas, on fait du debuguage, c'est a dire qu'on test le programme morceau par morceau pour savoir où ça bloque.
    Dans ton cas, est-ce que la led qui ne s'allume pas ? ou le bouton qui n'est pas lu ? on en sait rien ! Il faut donc tester les deux choses de façons independantes.
    Tester le bouton ce n'est a priori pas possible, vu que rien ne fonctionne. Il faut donc déjà tester ta led.
    Au début du programme, plutôt que d'écrire
    LED = 0
    et d'enquiller directement la boucle principale, essaye de mettre LED=1, puis une petite tempo d'une seconde (1000ms) puis LED=0

    Si au démarrage du PIC tu vois t'a LED s'allumer puis s'eteindre, c'est que la partie qui pilote la LED est bonne, ton probleme se trouve donc du côté de la lecture du bouton poussoir.
    Sinon, c'est déjà qu'il y'a un probleme à ce niveau et il faut chercher pourquoi et de quel côté peut être le probleme (est logiciel ou materiel ?)

    Après, quelque soit la complexité du programme, c'est toujours ainsi, on test bout par bout jusqu'a trouver le segment de programme qui pose probleme (biensûr avec des outils plus evolués genre ICD2 c'est plus facile que de faire allumer des LED)

  20. #16
    little01

    Re : pic + bouton poussoir ne fonctionne pas !!!

    vraiment merci de ton aide

    je viens de finir tous ce que tu m'as di d'essayer j'ai relier les pins entre elles.

    mais la led ne s'allume même pas au démarrage,
    la je sais plus du tout comment faire

    je vais devenir electroniquement fou looool

    dure dure de débuter!!!

  21. #17
    Forhorse

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Il faut peut être commencer par regarder du côté de la configuration du PIC utilisé (les ligne de declaration que l'on trouve normalement au début de chaque programme)
    comme le type d'oscillateur utilisé, le chien de garde, etc...

  22. #18
    little01

    Re : pic + bouton poussoir ne fonctionne pas !!!

    alors des petites nouvelle du montage

    alors j'ai décidé de mettre le portb en sortie pour les leds et le portD en entrée pour le bp

    j'ai fais simple pour comprendre, du coup j'ai refais le prog sous mikroc que voici :

    Code:
     void main(void)  {
     
      PORTB = 0;
      TRISB = 0;                  // configure les pins du portb en sortie (led)
      
      PORTD = 1;
      TRISD = 1;                 // configure les pins du portd en entrée (bouton poussoir)
      
      
      while (1) {                  // répète en boucle indéfiniment
      
                if (PORTD=1)        // si le bouton poussoir (portd) est actionné
                {
                PORTB = 1;          // alors la led (portb) s'allume
                }
                
                else
                PORTB = 0;         // sinon la led (portb) s'éteint
                }
    
    }
    et tadammm !!! il fonctionne !!

    par contre j'ai un soucis il faut que je reste appuyé un moment sur le bouton pour que la led s'allume ou plusieurs fois à la suite

    donc il doit avoir un soucis mais je sais pas quoi ?

    voilà merci d'avance de votre aide

    grace à vous j'avance et je progresse petit à petit malgrès des petits soucis

  23. Publicité
  24. #19
    cosinus

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Hello,

    if (PORTD=1) ce n'est pas bon, il faut ecrire if (PORTD==1)

  25. #20
    little01

    Re : pic + bouton poussoir ne fonctionne pas !!!

    je viens d'essayer et sa ne change pas mon soucis,

    je ne comprend pas pourquoi!! j'ai vu que certains programmé avec un anti rebond mais celà sert à quoi ?

  26. #21
    cosinus

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Si tu appuies sur un contact mécanique, il a tendance à rebondir pendant qq millisecondes. Cela est détecté par ton logiciel qui va considérer que tu as appuyé plusieurs fois sur ton switch.

    L'astuce dès que tu as appuyé sur ton switch est de vérifier qq millisecondes après dans quel état est ton switch. S'il est tjs de la même valeur, c'est que les rebonds ont cessés, la valeur est donc stable et peut enfin être interprétée par ton logiciel.

    Ton problème pourrait venir de là ...

  27. #22
    little01

    Re : pic + bouton poussoir ne fonctionne pas !!!

    merci de ton explication,

    alors je me suis rendu compte que tous dépend comment j'appui, ma led s'allume ou pas suivant le temps que je reste appuyé dessus et l'impulsion que je donne au bouton poussoir,

    donc peut être à cause de ce fameux "rebond"

    donc voilà je sais pas comment rémedier à ce soucis !

    merci de ton aide

  28. #23
    little01

    Re : pic + bouton poussoir ne fonctionne pas !!!

    si quelqu'un pourrait m'aider un peu...

    merci d'avance

  29. #24
    Forhorse

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Ce que je peux te dire, c'est que ce n'est pas un probleme de rebond. Vu la simplicité du programme, s'il y a un rebond, celui se transmet à la LED, mais c'est invisible à l'oeil nu, aucun soucis de ce côté pour cette application.

  30. Publicité
  31. #25
    slim67120

    Re : pic + bouton poussoir ne fonctionne pas !!!

    Code:
    /**************************************************
    *                    Commutateur éléctronique pour HIFI                 *
    *                              PIC  16F628A                                       *
    *                               Quartz 4Mhz                                       *
    *                            en MikroC V 8.2                                      *
    *                       DATE LE 19 / 06 / 2012                               *
    *      FUSIBLE                                                                      *
    *  WDT_OFF = $3FFB                                                           *
    *  LVP_ON  = $3F7F                                                             *
    *  HS_OSC  = $3FEE                                                            *
    **************************************************
    *                             NAIT - KAIT  SLIMANE                          *
    *  ************************************************/
    
       // ************************* entree  sortie  *****************************
    
    #define inter1 PORTB.F1      // RB1
    #define inter2 PORTB.F2      // RB2
    #define inter3 PORTB.F3      // RB3
    #define inter4 PORTB.F4      // RB4
    #define inter5 PORTB.F5      // RB5
    #define inter6 PORTB.F6      // RB6
    
    #define relais1 PORTA.F0     // RA0
    #define relais2 PORTA.F1     // RA1
    #define relais3 PORTA.F2     // RA2
    #define relais4 PORTA.F3     // RA3
    #define relais5 PORTB.F7     // RB7
    #define relais6 PORTB.F0     // RB0
    
       // ******************* Fonction principale ********************************
    
      void main(void)
      {
      PORTB = 0x00;          // Initialisation des pattes B
      PORTA = 0x01;          // Initialisation des pattes A
      TRISB = 0b01111110;    // entrée inter RB1.RB2.RB3.RB4.RRB5.RB6.en sortie RB0.RB7
      TRISA = 0b11100000;    // sortie relais RA0.RA1.RA2.RA3.
    
      for(;;)
      {
      if(inter1)                // si inter1 =1 alors
        {
         relais1 =1;         // allumer relais1  sortie RA0
         relais6 =0;         // éteindre le relais 6 sortie RB7
         relais5 =0;         // éteindre le relais 6 sortie RB0
        }
      if(inter2)                //si inter2 =1 alors
        {
         relais2 =1;         // allumer relais2  sortie RA1
         relais6 =0;         // éteindre le relais 6  sortie RB0
         relais5 =0;         // éteindre le relais 5  sortie RB7
        }
      if(inter3)                //si inter3 =1 alors
        {
         relais3 =1;         // allumer relais3  sortie RA2
         relais6 =0;         // éteindre le relais 6  sortie RB0
         relais5 =0;         // éteindre le relais 5  sortie RB7
        }
      if(inter4)                //si inter4 =1 alors
        {
         relais4 =1;         // allumer relais4  sortie RA3
         relais6 =0;         // éteindre le relais 6  sortie RB0
         relais5 =0;         // éteindre le relais 5  sortie RB7
        }
       if(inter5)               //si inter5 =1 alors
        {
         relais5 =1;         // allumer relais5  sortie RB7
         relais6 =0;         // éteindre le relais 6  sortie RB0
         relais4 =0;         // éteindre le relais 4  sortie RA3
        }
      if(inter6)               //si inter6=1 alors
        {
         relais6 =1;        // allumer relais6  sortie RB0
         relais1 =0;        // éteindre le relais 1  sortie RA1
         relais5 =0;        // éteindre le relais 5  sortie RB0
        }
      }
    }
    Cordialement
    Slim
    Dernière modification par Antoane ; 14/07/2015 à 19h35. Motif: Ajout balises [code]

  32. #26
    slim67120

    Thumbs up Re : pic + bouton poussoir qui fonctionne !!!

    Bonjour à tous

    voila un programme qui marche
    le bouton sollicité active son relais , est le relais précédent ce désactiver


    Code:
     /**************************************************
    *                    Commutateur éléctronique pour HIFI                 *
    *                              PIC  16F628A                                       *
    *                               Quartz 4Mhz                                       *
    *                            en MikroC V 8.2                                      *
    *                       DATE LE 19 / 06 / 2012                               *
    *      FUSIBLE                                                                      *
    *  WDT_OFF = $3FFB                                                           *
    *  LVP_ON  = $3F7F                                                             *
    *  HS_OSC  = $3FEE                                                            *
    ***************************************************
    *                                                                                        *
    *                      NIAT -KAIT SLIMANE                                    *
    *                                                                                        *
    ***************************************************/
    
    // ************** entree  sortie  ***********************
    
    #define inter1 PORTB.F1      // RB1
    #define inter2 PORTB.F2      // RB2
    #define inter3 PORTB.F3      // RB3
    #define inter4 PORTB.F4      // RB4
    #define inter5 PORTB.F5      // RB5
    #define inter6 PORTB.F6      // RB6
    
    #define relais1 PORTA.F0     // RA0
    #define relais2 PORTA.F1     // RA1
    #define relais3 PORTA.F2     // RA2
    #define relais4 PORTA.F3     // RA3
    #define relais5 PORTB.F7     // RB7
    #define relais6 PORTB.F0     // RB0
    
    // **************** Fonction principale ******************
    
      void main(void)
      {
      PORTB = 0x00;          // Initialisation des pattes B
      PORTA = 0x01;          // Initialisation des pattes A
      TRISB = 0b01111110;    // entrée inter RB1.RB2.RB3.RB4.RB5.RB6.en sortie relais .RB0.RB7
      TRISA = 0b11100000;    // sortie relais RA0.RA1.RA2.RA3.
    
      for(;;) 
      {
      if(inter1)                // si inter1 =1 alors
        {
         relais1 =1;         // allumer relais1  sortie RA0
         relais6 =0;         // éteindre le relais 6 sortie RB7
         relais5 =0;         // éteindre le relais 6 sortie RB0
        }
      if(inter2)                //si inter2 =1 alors
        {
         relais2 =1;         // allumer relais2  sortie RA1
         relais6 =0;         // éteindre le relais 6  sortie RB0
         relais5 =0;         // éteindre le relais 5  sortie RB7
        }
      if(inter3)                //si inter3 =1 alors
        {
         relais3 =1;         // allumer relais3  sortie RA2
         relais6 =0;         // éteindre le relais 6  sortie RB0
         relais5 =0;         // éteindre le relais 5  sortie RB7
        }
      if(inter4)                //si inter4 =1 alors
        {
         relais4 =1;         // allumer relais4  sortie RA3
         relais6 =0;         // éteindre le relais 6  sortie RB0
         relais5 =0;         // éteindre le relais 5  sortie RB7
        }
       if(inter5)               //si inter5 =1 alors
        {
         relais5 =1;         // allumer relais5  sortie RB7
         relais6 =0;         // éteindre le relais 6  sortie RB0
         relais4 =0;         // éteindre le relais 4  sortie RA3
        }
      if(inter6)               //si inter6=1 alors
        {
         relais6 =1;        // allumer relais6  sortie RB0
         relais1 =0;        // éteindre le relais 1  sortie RA1
         relais5 =0;        // éteindre le relais 5  sortie RB0
        }
      }
    }
    Dernière modification par Antoane ; 14/07/2015 à 19h36. Motif: Ajout balises [code]

  33. #27
    f6bes

    Re : pic + bouton poussoir qui fonctionne !!!

    Citation Envoyé par slim67120 Voir le message
    Bonjour à tous

    voila un programme qui marche
    le bouton sollicité active son relais , est le relais précédent ce désactiver

    }
    Bjr à toi et bienvenue sur FUTURA,
    Juste un détail...regarde la DATE...de la demande !!
    Bonne journée
    Ben ça marche!

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/05/2009, 14h36
  2. [C/PIC] - Gestion bouton poussoir
    Par jorg1n dans le forum Électronique
    Réponses: 6
    Dernier message: 29/04/2009, 07h07
  3. Solution bouton poussoir et PIC
    Par Olfox dans le forum Électronique
    Réponses: 7
    Dernier message: 04/03/2009, 10h49
  4. Hotte aspirante le bouton d'éclairage ne fonctionne pas
    Par pm79 dans le forum Bricolage et décoration
    Réponses: 8
    Dernier message: 02/12/2008, 18h23
  5. Pic 12F675 et bouton poussoir
    Par Demos666 dans le forum Électronique
    Réponses: 8
    Dernier message: 18/04/2008, 16h47
Découvrez nos comparatifs produits sur l'informatique et les technologies.