Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:


+ Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 15 sur 23

Programme en C pour PIC16F84

  1. jordan007

    Date d'inscription
    juin 2007
    Âge
    25
    Messages
    3
    Bonjour à tous,
    Je suis nouveau ici, et après beaucoup de recherche c'est ici que j'ai décidé de demander de l'aide car je pense que c'est le forum le mieu fourni en info.

    Je suis en première année d'IUT Génie Electrique et Informatique Industrielle,
    et dans le cadre d'un projet, je dois programmer un microcontrôleur PIC16F84 pour la carte de commande d'un robot hexapod (qui marche sur 6 pattes).
    ( voir à cette vidéo de presentation pour se donner une idée http://www.youtube.com/watch?v=BgSSFjCD050)

    J'ai utilisé PCW pour coder et compiler le programme, (j'avai devpic84c, mais en version d'essai...), et il ne permet pas (en tu cas pas a ma connaissance) de simuler le programme sur le logiciel. Après montage de la carte, et programmation du PIC, le test s'est révélé décevant.

    Seul deux sortie sont figée à 1, et ceci n'est pas cohérent avec le programme.
    Je me demande donc s'il ne peu pas y avoir une erreur avec le parametrage des entrées _ sorties...

    Bilan des entrée sorties :

    Ra0: Sortie
    Ra1: Entrée
    Ra2: Entrée
    Ra3: Entrée
    Ra4: Entrée

    Rb0: Entrée
    Rb1: Entrée
    Rb2: Sortie
    Rb3: Sortie
    Rb4: Sortie
    Rb5: Sortie
    Rb6: Sortie
    Rb7: Sortie

    Voici le schéma électronique :
    (pièce jointe redimensionnée)

    Et le code :

    Code:
    ///////////////////////
    //  INITIALISATIONS  //
    ///////////////////////
    
    /* librairies */
    
    #include <16F84.h>
    
    
    /* affectation des noms aux broches des porta et portb */
    
    #define LED_rouge PIN_a0
    #define marche PIN_a1
    #define C_horaire PIN_a2
    #define C_antihoraire PIN_a3
    #define detect PIN_a4
    
    #define Cp2 PIN_b0
    #define Cp1 PIN_b1
    #define D_droite PIN_b2
    #define D_gauche PIN_b3
    #define M_droit PIN_b4
    #define Csmd PIN_b5
    #define M_gauche PIN_b6
    #define Csmg PIN_b7
    
    /* type de l oscillateur */
    
    #use delay(clock = 4000000)
    
    /* declarations des prototypes de fonctions */
    
    void A_moteur();
    void LED_capt();
    void synchro();
    void M_avant();
    void T_horaire();
    void T_antihoraire();
    void attendre(int n);     // retourne un entier n
    
    /* definition des variables */
    
    char i,j;
    
    
    /////////////////////////////////////////////////////////////
    //             Debut du programme principale		           //
    /////////////////////////////////////////////////////////////
    
    
    void main()
    {
       set_tris_a (0xFE);
       set_tris_b (0x03);
    
    
    	while(1)
    	{
    		if(input(marche))			// commutateur c1 enclenche
          {
    			if(input(detect))			// pas d obstacles detectes
    			{
    				A_moteur();		// arret des moteurs
    				attendre(1);		// attendre 1 seconde
    				synchro();		// synchronisation des pattes
    				attendre(1);
    
    
                while(!input(C_horaire) && !input(C_antihoraire) && input(detect))
                {
    
    			       	M_avant();		// debut de la marche avant
    			        	LED_capt();
    
                }
    
    
                if(input(C_horaire) && !input(C_antihoraire))
    			   {
    				    A_moteur();		// arret des moteurs
                    attendre(1);
    				    synchro();
    			       attendre(1);
    
                    while(input(C_horaire) && !input(C_antihoraire) && input(detect))
                      {
    		    			       T_horaire();		// debut de la rotation horaire
    			   			    LED_capt();
    
                      }
                 }
    
    
       			 if(input(C_antihoraire) && !input(C_horaire))
    	     		 {
    		    			A_moteur();			// arret des moteurs
    		 	     		attendre(1);
    			   		synchro();
    			   		attendre(1);
    
                      while(!input(C_horaire) && input(C_antihoraire) && input(detect))
                      {
    
       			            T_antihoraire();       // debut de la rotation antihoraire
    	     				      LED_capt();
    
       		         }
    
                  }
          }
    		else
    		{
    			  A_moteur();		// arret des moteurs
    			  attendre(1);
    			  synchro();		// synchronisation des pattes
               attendre(1);
    
               while(!input(detect) && input(D_gauche))
    			  {
    			     	LED_capt();
    			  	   T_horaire();
    			  }
    
    
               while(!input(detect) && input(D_droite))
    			  {
    			  		LED_capt();
    			  		T_antihoraire();
    			  }
    
    
          }
       }
    }
    
    }
    
    
    
    
    
    ////////////////////////////////////////////////////////////////////////
    //                     Fonctions secondaires			                   //
    ////////////////////////////////////////////////////////////////////////
    
    
    /* fonction de commande des LED IR */
    
    void LED_capt()
    {
       for(i=0;i<23;++i)       // train d impultion de 600 us
    	{
    
          output_high(D_droite);
    		output_low(D_gauche);
    		delay_us (13);
    		output_low(D_droite);
    		delay_us (13);
    	}
    
       delay_us(200);       // GAP de 600 us egal au train d impultion
       delay_us(200);
       delay_us(200);
    
    	for(j=0;j<23;++j)         // train d impultion de 600 us
    	{
    
    		output_high(D_gauche);
    		output_low(D_droite);
    		delay_us (13);
    		output_low(D_gauche);
    		delay_us (13);
    	}
    
       delay_us(200);       // GAP de 600 us egal au train d impultion
       delay_us(200);
       delay_us(200);
    
    }
    
    /* fonction de synchronisation des pattes */
    
    void synchro(){
    
       while(!input(Cp2))
    	{
    		 output_high(M_gauche);
    		 output_low(M_droit);
    	}
    	while(!input(Cp1))
    	{
    		output_high(M_droit);
    		output_low(M_gauche);
    	}
    
    }
    
    /* fonction de marche avant */
    
    void M_avant(){
    	 output_high(M_gauche);
    	 output_high(M_droit);
    
    }
    
    /* fonction de rotation horaire */
    
    void T_horaire(){
    	 output_high(M_droit);
    	 output_low(Csmd);
    	 output_high(M_gauche);
    	 output_high(Csmg);
    
    }
    
    /* fonction de rotation antihoraire */
    
    void T_antihoraire(){
    	 output_high(M_droit);
    	 output_high(Csmd);
    	 output_high(M_gauche);
    	 output_low(Csmg);
    
    }
    
    /* fonction d arret du robot*/
    
    void A_moteur()
    {
    	output_low(M_gauche);	// arret du
    	output_low(M_droit);	// moteur
    
    }
    
    /* fonction de temporisation en seconde */
    
    void attendre(int n)
    {
      for (;n!=0; n--)
      {
         delay_ms( 1000 );
      }
    }
    
    
    
    
    // fin du texte
    Si quelqu'un pouvait m'aider... HELP
    Images attachées
    Dernière modification par HULK28 ; 10/06/2007 à 21h20. Motif: Redimensionnement de l'image trop grande et rendant illisible le post
     


    • Publicité




      Poursuivez votre recherche
      Recherche personnalisée

  2. HULK28

    Date d'inscription
    janvier 2006
    Localisation
    dans le labo d'essais...
    Âge
    48
    Messages
    9 015

    Re : Programme en C pour PIC16F84

    Salut,

    je ne vois aucune résistance de pull-up sur tes ports...
    Que représente co1, co2....?
    @+
    HULK

    "Pour la carotte, le lapin est la parfaite incarnation du Mal."
    Robert Scheckley.
     

  3. jordan007

    Date d'inscription
    juin 2007
    Âge
    25
    Messages
    3

    Re : Programme en C pour PIC16F84

    Merci pour cette réponse,

    Co1, Co2 etc...representent des interupteurs.
    Il envoients juste un état 1 dans keurs broches respective.

    Il ai nécéssaire d'avoir des resistance de pull up pour les entrée ?
     

  4. HULK28

    Date d'inscription
    janvier 2006
    Localisation
    dans le labo d'essais...
    Âge
    48
    Messages
    9 015

    Re : Programme en C pour PIC16F84

    Lorsque tes interrupteurs sont ouverts il est nécessaire dans ton cas de fixer tes entrées à un niveau 0, donc il te faut placer des "pull down" ou résistances reliées à la masse.
    HULK

    "Pour la carotte, le lapin est la parfaite incarnation du Mal."
    Robert Scheckley.
     

  5. jordan007

    Date d'inscription
    juin 2007
    Âge
    25
    Messages
    3

    Re : Programme en C pour PIC16F84

    Merci pour ces réponse.
    J'ai u la soutenance de mon projet il y a une semaine et demi.
    La note obtenue a été un 20/20.

    Merci poour cette aide qui me permetra de terminer le circuit commande.

    ++

    Jordan.
     

  6. just-a-man-but

    Date d'inscription
    avril 2008
    Âge
    22
    Messages
    109

    Re : Programme en C pour PIC16F84

    Citation Envoyé par jordan007 Voir le message
    Merci pour ces réponse.
    J'ai u la soutenance de mon projet il y a une semaine et demi.
    La note obtenue a été un 20/20.

    Merci poour cette aide qui me permetra de terminer le circuit commande.

    ++

    Jordan.
    salut je suis un éléve au terminale et j'ai un PPE c'est la barriere automatique d'un parking commendé par un PIC16F84 .
    le systéme fonctionne comme se suit:
    apres le tapage du code exacte avant l'entré du vihécule au parking , le moteur sera actionné pour lever la barriére , puis notre vihécule sera detecté aprés son dépassage de la barrivr par un detecteur emeteur-recepteur pour faire descendre la barriere du nouveau .
    je veux savoir tout ce quil me faut sur ce projet comme le schema de liaison du montage et le code de programation du pic avec le max des explication car le ne reste po trop de temp pour que je presente mon projet et moi j'ai rien trouver de resultat encore .
    merci d'avance .
     


    • Publicité



  7. HULK28

    Date d'inscription
    janvier 2006
    Localisation
    dans le labo d'essais...
    Âge
    48
    Messages
    9 015

    Re : Programme en C pour PIC16F84

    Salut,

    et avec tout ça tu veux pas un mars aussi?

    Un PPE est un travail personnel demandé, si tu veux de l'aide d'accord, mais avant il faut montrer ce que tu as déjà fait.
    Jordan007 lui a fait un travail, puis il est venu demander de l'aide, c'est comme ça que ça fonctionne ici.
    @+
    HULK

    "Pour la carotte, le lapin est la parfaite incarnation du Mal."
    Robert Scheckley.
     

  8. just-a-man-but

    Date d'inscription
    avril 2008
    Âge
    22
    Messages
    109

    Re : Programme en C pour PIC16F84

    cafait 7 mois que je travail sur ce projet j'ai terminer l'analyse interne et externe du systeme. apart ca j'ai rien trouve car ya pas des sources et j'ai des problems que je rencontre avec mon proffesseur DEBUTANT et a tes info c'est la premiere fois que je demmande de l aide sur un forum alor si j'ai venue pour vous demmande de l'aide c par ce que je me suis desespere.
    et j'aime pas trop le mars tu peu la garder pour toi merci en tout cas mais j'att encore de l'aide merci d'avance .
     

  9. jorg1n

    Date d'inscription
    septembre 2007
    Messages
    1 833

    Re : Programme en C pour PIC16F84

    Bonjour,...
    il y a une petite chose qui m'interpelle...
    je veux savoir tout ce quil me faut sur ce projet comme le schema de liaison du montage et le code de programation du pic avec le max des explication car le ne reste po trop de temp pour que je presente mon projet et moi j'ai rien trouver de resultat encore .
    et
    cafait 7 mois que je travail sur ce projet
    ... Tu dois bien avoir déjà fais quelquechose!!
    on peut pas tout faire à ta place...alors met déja ce que tu as fait...
    bonne journée
     

  10. just-a-man-but

    Date d'inscription
    avril 2008
    Âge
    22
    Messages
    109

    Re : Programme en C pour PIC16F84

    j'ai que une analyse interne et externe du systeme qui comporte la bete a cornes + le diagramme fonctionnel + le diagramme FAST et le SADT si vous voulez que je presente ceci ya po de problem mais je vous le jurr que c tout ce que j'ai trouver moi et mon groupe car j'ai pas des sources ou je cherche apart l internet si nn ya rien . meme les proffesseurs nous donnent pas beaucoup de l'aide car elle ne sachent rien du tt.
    au moin donner moi des truk pour que je commence a travailler j'ai vraiment besoin je ne demmande po de toi de me faire tout le travaille. merci
     


    • Publicité



  11. just-a-man-but

    Date d'inscription
    avril 2008
    Âge
    22
    Messages
    109

    Re : barriere automatique commander par pic16F84

    comment deja je peu attacher un fichier de format word avec ma reponse ?
     

  12. HULK28

    Date d'inscription
    janvier 2006
    Localisation
    dans le labo d'essais...
    Âge
    48
    Messages
    9 015

    Re : Programme en C pour PIC16F84

    Il faut le poster en Zip.
    @+
    HULK

    "Pour la carotte, le lapin est la parfaite incarnation du Mal."
    Robert Scheckley.
     

  13. just-a-man-but

    Date d'inscription
    avril 2008
    Âge
    22
    Messages
    109

    Re : Programme en C pour PIC16F84

    et comment je peu le poster en Zip ?
     

  14. HULK28

    Date d'inscription
    janvier 2006
    Localisation
    dans le labo d'essais...
    Âge
    48
    Messages
    9 015

    Re : Programme en C pour PIC16F84

    Tu cliques sur "répondre", tu tapes un message, tu cliques sur le trombonne -> une fenêtre apparait "Gérer les pièces jointes", tu as en haut de cette fenêtre "ajouter un fichier de votre ordinateur" et "parcourir", tu cliques sur "parcourir", tu vas chercher ton fichier que tu as préalablement zippé, tu le sélectionnes, tu fais "ouvrir", il apparait dans la case blanche à gauche de "parcourir", tu fais "uploader".

    En bas de la fenêtre "Gérer les pièces jointes" tu as le détail des fichiers uploadables ainsi que leurs tailles maxi.
    @+
    HULK

    "Pour la carotte, le lapin est la parfaite incarnation du Mal."
    Robert Scheckley.
     


    • Publicité



  15. umfred

    Date d'inscription
    mars 2006
    Âge
    33
    Messages
    1 344

    Re : Programme en C pour PIC16F84

    je pense aussi qu'un seul post sur le sujet serait plus simple pour bien suivre l'évolution du problème inutile de poster à plusieurs endroit la même question
     


Poursuivez votre recherche :




Sur le même thème :




 

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/03/2007, 19h48
  2. Programme pour convertir du .mid (et pour les prolonger) ?
    Par shokin dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 21/04/2006, 23h10
  3. aide pour pic16f84 et dcf77
    Par tiresias dans le forum Électronique
    Réponses: 0
    Dernier message: 04/04/2006, 17h30
  4. Programme pour PIC10F206
    Par michel5002 dans le forum Électronique
    Réponses: 6
    Dernier message: 28/04/2005, 14h52
  5. programme pour pic16f84 pour une centrale d'alarme
    Par yacen dans le forum Électronique
    Réponses: 3
    Dernier message: 25/01/2005, 11h06


Les tags pour cette discussion