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

éclairé deux led



  1. #1
    coeur noire
    Invité

    éclairé deux led

    salut

    je n'arrive pas a faire clignoter deux led a des moment differents
    a l'aide de deux boucle
    j'ai essayé de mettre une condition if
    Code:
     
    
    void main(void)
    
          {
    
    long n=0,m=0;
    ANSEL=0;
    OPTION_REG = 0b00000000;
    TRISB = 0b00110111;
    TRISA = 0b11101111;
    
    
    
    
            while(n)
            {
        PORTA.F4 =  ~PORTA.F4;
        Delay_ms(1000);
    
    
             }
    
            while(m==0)
            {
    
        PORTB.F3 =  ~PORTB.F3;
        Delay_ms(1000);
    
    
             }
            if(n==1)
            {
             m=0;
             m=~m;
             Delay_ms(6000);
            }
    
    
            else if(m==1)
            {
            n=0;
            n=~n;
            Delay_ms(3000);
                }
    
    
             }

    -----


  2. Publicité
  3. #2
    maximilien

    Re : éclairé deux led

    Pour ceux qui n'ont pas suivis ton autre discussion il ne savent pas ton compilateur ni ton PIC...
    C'est donc MIKROC et 16F88.
    (si c'est les mêmes)

    Code:
    // INITIALISATION
    do{
            PORTA.F4 =  ~PORTA.F4;
            Delay_ms(1000);
    
    }while(1);
    la partie initialisation est dépendante du pic (par exemple mettre en numérique le port A)

    Quel est ton câblage??

  4. #3
    cherwam07

    Re : éclairé deux led

    Salut,

    Tu as un problème d'algorithmie là...

    Si on déroule ton programme voici ce qu'il se passe :

    Code:
    while(n)
    {
        PORTA.F4 =  ~PORTA.F4;
        Delay_ms(1000);
    }
    Sachant que tu as déclaré n=0, ton programme ne rentre même pas dans la boucle.

    On arrive à :
    Code:
    while(m==0)
    {
        PORTB.F3 =  ~PORTB.F3;
        Delay_ms(1000);
    }
    Ici tu déroules une boucle tant que m égal 0, mais rien dans la boucle ne modifie la variable m, conclusion ton programme reste éternellement dans la boucle.

    Donc dis moi si je me trompe, tu dois voir seulement clignoter la led cablée sur RB3 (si elle est bien cablée bien sur).


    Est-ce que par hasard (c'est l'impression qu'on a en lisant ton code) tu penses que les deux boucles while() sont exécutées en même temps ??


    PS : Dans un PIC, sauf si c'est nécessaire (et là ca ne l'est pas), on ne déclare pas de long (qui prennent 4 octets sur les malheureux 256 octets dont tu disposes), on déclare plutôt des 'unsigned char' qui eux ne prennent qu'un octet.


    Alors revient vite nous expliquer ce que tu cherches à faire

    ++

  5. #4
    coeur noire
    Invité

    Re : éclairé deux led

    salut
    toujour sur mikroC 16F88
    je voudrais éclairer deux led chaqu'un leur tour
    mais quand j'applique ce code sur ma platine d'essai j'ai la led sur PORTA.F4 qui clignote et PORTB.F3 qui reste allumé
    est ce que j'ai bien placer les conditions dans le code?
    les conditions sont pourtant bien en dehors de la boucle permanent


    Code:
    void main(void)
    
          {
    char n,m;
    ANSEL=0;
    OPTION_REG = 0b00000000;
    TRISB = 0b11110111;
    TRISA = 0b11101111;
    
            while(1)//boucle permanent
        {
            while(n)//premier boucle durer 6000ms
            {
        PORTA.F4 =  ~PORTA.F4;//led qui clignote
        Delay_ms(1000);
        m=0;
    
            }
            while(m)//second  boucle durer 6000ms
            {
    
        PORTB.F3 =  ~PORTB.F3;//led qui clignote
        Delay_ms(1000);
        n=0;
            }
        }
            if(n==1)// condition de la premier boucle 
            {
             n=0;//dans 6 seconds on sort de la premier boucle 
             Delay_ms(6000);
            }
            else if(m==1)//condition de la second boucle 
            {
            m=0;//dans 6 seconds on sort de la second  boucle 
            Delay_ms(6000);
            }
    }

  6. #5
    coeur noire
    Invité

    Re : éclairé deux led

    salut
    je voudrais faire clignoter deux led chaqu'un leur tour
    mais quand j'applique ce code sur ma platine d'essai j'ai la led sur PORTA.F4 qui clignote et PORTB.F3 qui reste eteint
    quand j'écris
    n=0;
    Delay_ms(3000);
    ma variable n prend la valeur 0 aux bout de 3 second ce qui me permait de sortir de la boucle(n)

    Code:
    void main(void)
    
          {
    
    char n=1,m=0;
    ANSEL=0;
    OPTION_REG = 0b00000000;
    TRISB = 0b11110111;
    TRISA = 0b11101111;
    PORTA.F4=n;
    PORTB.F3=m;
      while(1)
    {
            while(n!=1)
            {
        PORTA.F4 =~PORTA.F4;
        Delay_ms(1000);
        n=0;
        Delay_ms(3000);
             }
    
            while(m!=1)
            {
    
        PORTB.F3 =~PORTB.F3;
        Delay_ms(1000);
        m=0;
        Delay_ms(3000);
             }
    }

  7. A voir en vidéo sur Futura

Sur le même thème :

Discussions similaires

  1. EQ3-2 viseur polaire éclairé
    Par floki dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 11
    Dernier message: 26/02/2009, 11h06
  2. Comment faire allumer 1 led, 2 led, 3 led, etc
    Par Candide01 dans le forum Électronique
    Réponses: 5
    Dernier message: 17/07/2008, 20h18
  3. Question ridicule : alimenter deux LED ?
    Par Ziell dans le forum Électronique
    Réponses: 2
    Dernier message: 19/02/2007, 16h05
  4. Recherche avis éclairé.
    Par PiedAlu dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 08/02/2007, 13h33
  5. Besoin d'être éclairé
    Par MagAxX dans le forum Biologie
    Réponses: 2
    Dernier message: 04/12/2005, 20h16