Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Erreur Programme LED + BP PIC16F18345
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 358
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#21 Message par venom » ven. 9 mars 2018 12:20 lien vers la Data-Sheet : Cliquez ici

Autant pour moi. :oops: C'est modifier.






@++

Erreur Programme LED + BP PIC16F18345
jo7
Débutant
Débutant
Messages : 28
Enregistré en : février 2018

#22 Message par jo7 » ven. 9 mars 2018 13:40 lien vers la Data-Sheet : Cliquez ici

Pardon pour ma réponse un peu sec Jeremy,
Concernant ton code, une fois que je compile le programme, la LED s'allume constamment et le bouton poussoir ne détecte rien, bizarre :roll:

Erreur Programme LED + BP PIC16F18345
paulfjujo
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 968
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#23 Message par paulfjujo » ven. 9 mars 2018 13:47 lien vers la Data-Sheet : Cliquez ici

il manquait une parenthese au 2em test
l'increment doit plutot se faire sur action du BP .. quand il passe à 0 !


Code : Tout sélectionner

// init au depart !
#define ON 0   // because led tirée au +VCC
#define OFF 1
  
  
.. etc ..
  
  etat_Bp
= 0;  // initialise l' etat au depart
  Led=OFF;
 while(1)   // boucle infinie
     {
       if ( (etat_Bp == 0) && (BP == 0) // Si le bouton est appuyé => niveau 0 !
      {   
          __delay_ms
(30);   // attend la fin des rebons mecaniques
           if (BP == 0)  // on confirme  si il est encore  appuyé !
            {
               etat_Bp = 1;
               ledR =ON;
                unite ++;
               }
        } // if
       
       if 
(   (etat_Bp == 1) && (BP == 1)  )  // BP relaché, tiré au +VCC par Pull up
       {
           __delay_ms(30);  // attend la fin des rebons mecaniques
          if (BP == 1)  // il est bien relaché
      {
             etat_Bp = 0;
                ledR =OFF;         
           
}
       } //if
   } //while
   

Erreur Programme LED + BP PIC16F18345
jo7
Débutant
Débutant
Messages : 28
Enregistré en : février 2018

#24 Message par jo7 » ven. 9 mars 2018 15:29 lien vers la Data-Sheet : Cliquez ici

J'ai essayé ce code, à la compilation quand j'appuie longtemps sur le bouton la LED s'allume et en relachant la LED s'éteint .
Moi je veux juste un programme qui exécute:

1. quand on appuie sur le bouton et qu'on relâche, la LED s'allume
2. 2ème appuie, on éteint la LED

Je n'arrive pas à trouver la logique, si vous avez d'autres informations, je suis preneur. Merci d'avance ! :-)

Erreur Programme LED + BP PIC16F18345
paulfjujo
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 968
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#25 Message par paulfjujo » ven. 9 mars 2018 16:49 lien vers la Data-Sheet : Cliquez ici

jo7 a écrit :... quand j'appuie longtemps sur le bouton la LED s'allume et en relachant la LED s'éteint .


:?: :?: quand tu appuies longtemps ? 30 mS !!!
c'est quoi ton
__delay_ms(30); ???
avec mikroC c'est
Delay_ms(30);

si 30mS c'est long, c'est qu'il y a un probleme sur ta valeur FOSC !!
verifie qsi tu as bien les 2 secondes allumage led ...


modif:
au 1er appuie Etat_BP passe à 1
il faut un 2eme appui pour que Etat_Bp= repasse à zero et eteigne la led


Code : Tout sélectionner

/ init au depart !

#define ON 0   // because led tirée au +VCC
#define OFF 1
  
  
.. etc ..
  
  Led
=ON;
  __delay_ms(2000);
  Led=OFF;
    __delay_ms(2000);
  Led=ON;
    __delay_ms(2000);
    Led=OFF; 
  
  etat_Bp
= 0;  // initialise l' etat au depart
  Led=OFF;
 while(1)   // boucle infinie
     {
       if ( (etat_Bp <) && (BP == 0) // Si le bouton est appuyé => niveau 0 !
      {   
          __delay_ms
(30);   // attend la fin des rebons mecaniques
           if (BP == 0)  // on confirme  si il est encore  appuyé !
            {
               etat_Bp++;
               ledR =ON;
                unite ++;
                while(BP==0);    //  :furieux:  il faut le relacher ce BP !
               }
        } // if
       
       if 
(   (etat_Bp >1) && (BP == 1)  )  // BP relaché, tiré au +VCC par Pull up
       {
           __delay_ms(30);  // attend la fin des rebons mecaniques
          if (BP == 1)  // il est bien relaché
      {
             etat_Bp = 0;
                ledR =OFF;         
           
}
       } //if
   } //while  

Erreur Programme LED + BP PIC16F18345
jo7
Débutant
Débutant
Messages : 28
Enregistré en : février 2018

#26 Message par jo7 » ven. 9 mars 2018 16:59 lien vers la Data-Sheet : Cliquez ici

J'utilise le programmateur MPLAB ICD 3 .
J'ai un oscillateur externe à 32MHZ, je vais essayer ton programme pour voir ce que ça me donne.

Erreur Programme LED + BP PIC16F18345
jo7
Débutant
Débutant
Messages : 28
Enregistré en : février 2018

#27 Message par jo7 » ven. 9 mars 2018 17:09 lien vers la Data-Sheet : Cliquez ici

Ce programme m'allume la LED constamment et je n'ai pas la gestion du bouton, c'est bizarre, on est pas loin de trouver la solution. Il doit y avoir une configuration que j'ai oublié sur les ports mais après vérification, ça m'a l'air correct .

Erreur Programme LED + BP PIC16F18345
jo7
Débutant
Débutant
Messages : 28
Enregistré en : février 2018

#28 Message par jo7 » mar. 13 mars 2018 09:14 lien vers la Data-Sheet : Cliquez ici

Bonjour paulfjujo,
Ton code fonctionne correctement, j'ai un mis un delay de 1 ms et la gestion du bouton est opérationnel . Merci beaucoup pour ta patience et à bientôt pour de nouvelles aventures ! :bravo: :bravo:


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités