IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Embarqué Discussion :

Problème de programmation PIC via mikroC [PIC]


Sujet :

Embarqué

  1. #61
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Quand je suis bloqué je fais ça ; on met ton programme à poil, c'est à dire qu'on va retirer tout ce qui ne sert pas à comprendre "où est le problème" et ajouter les choses une part une, mais vraiment une par une sinon tu ne vas jamais trouver ce qui ne va pas.

    Pas de fonction, pas de gestion d'interrupteur et on allume qu'une seule LED avec un masque et rien d'autre. Une programme minimal. Si le bit vaut 1 alors


    Ci dessous, à compiler par tes soins, un programme qui regarde qu'elle est la valeur du bit 0 de donne. Si le bit n°0 vaut 1 alors RB1 clignote sinon il ne clignote pas. La LED devrait clignoter car donnee vaut 0b00000001

    Est ce que ce truc minimaliste fonctionne ?

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #include <stdio.h>
     
    void main() {
     unsigned char donnee = 0b00000001;
     
     TRISA = 0b00000010; //port A en sortie sauf RA1
     PORTA = 0b11001000 ; //mettre les sorties à zéro sauf RA6, RA7,RA3
     TRISB = 0b00000001; //port B en sortie sauf RB_0
     PORTB = 0 ; //mettre les sorties à zéro
     pcon.OSCF = 1; //configure le bit 3 du registre pcon pour 4 Mhz
     CMCON = 0b00000111; //désactiver les comparateurs sur RA0
     
     
        while(1)
        {
          if(donnee & 0x01 == 1) {
            RB1_bit = 1 ;
            delay_ms(250);
            RB1_bit = 0 ;
          }
          else {
            RB1_bit = 0 ;
          }
        }
     
    }


    ps : tiens c'est bizarre delay_ms a un 'd' minuscule tandis que dans le code qui ne marche pas c'est un 'D' majuscule. Ça aussi, élimine le doute, si ça clignote tu essayes delay avec et sans majuscule histoire qu'on ne se pose plus la question plus tard. Soit c'est pareil, soit un des deux ne marche pas.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  2. #62
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    Pour commencer, ça compile.
    Mais quand je test sur Proteus : au début dans la simulation la LED clignote 1 seul fois. Et puis la LED est constamment allumée, que j'appuie ou non sur le bouton.
    J'ai testé avec et sans la majuscule le delay ça ne change rien.
    Nom : Capture2.PNG
Affichages : 380
Taille : 50,2 Ko

  3. #63
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Citation Envoyé par Vincent PETIT Voir le message
    MAIS TU POUVAIS PAS VENIR AVAAANNNTTTT
    Salut,

    J'essaie, enfin, quand j'ai un moment de détente. Mais du temps de libre est un luxe que je n'ai malheureusement pas, contrairement à vous, les mecs. :p

    J'allais terminer sur une salutation, mais tu sais quoi,

    ( !!! Risque de style télégraphique. Rédiger sur téléphone en émulation desktop n'est pas évident :\ ).

    Bon tu sais quoi, j'ai regarder le début de la discussion, la fin, je visualise un peu près ce que sparow1 veut faire: boucle, tableau, RBx_bit et tout...
    Et grâce a toi il est au fait du décalage de bit et de l’algèbre de Boole. Très bon point.

    Je vais essayer d'aider un peu:

    Objectif: reproduire RBx_bit=y au niveau des PORTs, permettre l'usage boucle/tableau.

    Piste de réflexion: Encoder une représentation PORT_X/bit_x RXx_bit utilisable par 2 fonctions-outils de modèles set_bit, clear_bit transposées aux leds et tout en restant indépendant du sens de montage de ces dernières <=> abstraction (désolée, j'abrège.)

    Encodage et définition de LEDs
    Type famille: entier
    Déclaration/définition: aux choix uchar, enum, #define

    exemple
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define LED0 0xA0
    #define LED1 0xB1
    /*...*/

    où A0 dans 0xA0 représente le bit O du PORT A, et le A0 dans RA0_bit

    Implémentation (tentative d') des 2 fonctions-outils :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void set_led(unsigned char led_id) {
      if ((led_id&0xa0)==0xa0)
         PORTA|=(1<<(led_id&0x0f));
      if ((led_id&0xb0)==0xb0)
         PORTB|=(1<<(led_id&0x0f));
    }
     
    void clear_led(unsigned char led_id) {
      if ((led_id&0xa0)==0xa0)
         PORTA&=~(1<<(led_id&0x0f));
      if ((led_id&0xb0)==0xb0)
         PORTB&=~(1<<(led_id&0x0f));
    }

    où un set_led(0xPn) serait équivalent à RPn_bit=1,
    et clear_led(0xPn) serait équivalent à RPn_bit=0


    Usage possible, manipulation de LEDs
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set_led(LED1)
    delais_ms(250)
    clear_led(LED1)

    J'espère que ça aidera.
    Bye.

    ps: il faudra renommer la fonction LED1() en autre chose.

  4. #64
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    Je comprends à peu près ce que tu veux faire, j'ai essayé de mettre ça dans mon code.
    Mais ça reste un peu brouillon, j'ai réussi à enlever les erreurs, mais ça ne donne pas le résultat attendu.

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    #include <stdio.h>
     
    #define LED4 0xA0
    #define LED5 0xB1
    #define LED6 0xB2
    #define LED7 0xB3
    #define LED8 0xB4
    #define LED9 0xB5
    #define LED10 0xB6
    #define LED11 0xB7
     
    void set_led(unsigned char led_id) {
     if ((led_id&0xa0)==0xa0)
      PORTA|=(1<<(led_id&0x0f));
     if ((led_id&0xb0)==0xb0)
      PORTB|=(1<<(led_id&0x0f));
    }
     
    void clear_led(unsigned char led_id) {
     if ((led_id&0xa0)==0xa0)
      PORTA&=~(1<<(led_id&0x0f));
     if ((led_id&0xb0)==0xb0)
      PORTB&=~(1<<(led_id&0x0f));
    }
     
    void LEDcontrol(unsigned char d){ // Début du Sous-programme LED1, on allume et éteind les leds de D4 à D11 l'une après l'autre
     unsigned int ma_variable_16bits = 0;
     ma_variable_16bits = d;
     for(;;){
      RA0_bit = 1 ;    //sortie RA0 à 1
      delay_ms(250);   //delai d'1/4 sec
      RA0_bit = 0 ;    //sortie RA0 à 0
      RB1_bit = 1 ;
      delay_ms(250);
      RB1_bit = 0 ;
      RB2_bit = 1 ;
      delay_ms(250);
      RB2_bit = 0 ;
      RB3_bit = 1 ;
      delay_ms(250);
      RB3_bit = 0 ;
      RB4_bit = 1 ;
      delay_ms(250);
      RB4_bit = 0 ;
      RB5_bit = 1 ;
      delay_ms(250);
      RB5_bit = 0 ;
      RB6_bit = 1 ;
      delay_ms(250);
      RB6_bit = 0 ;
      RB7_bit = 1 ;
      delay_ms(250);
      RB7_bit = 0 ;
     }
    } // Fin du sous-programme LED1
     
    void main() {
     unsigned char donnee = 0b00000001;
     
     TRISA = 0b00000010; //port A en sortie sauf RA1
     PORTA = 0b11001000 ; //mettre les sorties à zéro sauf RA6, RA7,RA3
     TRISB = 0b00000001; //port B en sortie sauf RB_0
     PORTB = 0 ; //mettre les sorties à zéro
     pcon.OSCF = 1; //configure le bit 3 du registre pcon pour 4 Mhz
     CMCON = 0b00000111; //désactiver les comparateurs sur RA0
     
     while(1)
     {
      if(donnee & 0x01 == 1) {
       set_led(0xA0);
       delay_ms(250);
       clear_led(0xA0);
      }
     }
    }

    Dès que je démarre la simulation, la LED (D4) s'allume une fois très rapidement, puis reste constamment allumé que j'appuie ou non sur le bouton.
    Nom : Capture1.PNG
Affichages : 330
Taille : 57,9 Ko

  5. #65
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Essaye avec ceci, sans gestion de bouton :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while(1){
       set_led(LED4);
       delay_ms(1000);
       clear_led(LED4);
       delay_ms(1000);
    }

  6. #66
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    La LED 4 clignote bien, selon le délai imposé

  7. #67
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Ah mais il ne fallait pas attendre sur moi. Tu avais tout ce qu'il faut pour faire ta boucle, ce que tu souhaitais simplifier avec un tableau. Tu te fais une nouvelle fonction que tu appelles depuis ton while. Tu y mets un tableau que tu remplis avec des LEDX: unsigned char leds[]={LED4, LED5, ....}; que tu parcours avec ta boucle for, puis set_led(leds[i]), etc.

    Fais d'abord sans bouton, et après avec tout en expliquant le comportement que tu en attendais.

  8. #68
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    Je bloque en fait..

    je dois faire une fonction juste pour le tableau ?
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void tabLed(unsigned char led_id){
     unsigned char leds[]={LED4, LED5, LED6, LED7, LED8, LED9, LED10, LED11};
    }

    J'ai des erreurs dans le while, à cause du type de tabLed, je sais pourquoi mais je n'arrive plus à le corriger. Ça fait un petit moment que j'ai fait du C, pour tout vous dire
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    #include <stdio.h>
     
    #define LED4 0xA0
    #define LED5 0xB1
    #define LED6 0xB2
    #define LED7 0xB3
    #define LED8 0xB4
    #define LED9 0xB5
    #define LED10 0xB6
    #define LED11 0xB7
     
    void set_led(unsigned char led_id) {
     if ((led_id&0xa0)==0xa0)
      PORTA|=(1<<(led_id&0x0f));
     if ((led_id&0xb0)==0xb0)
      PORTB|=(1<<(led_id&0x0f));
    }
     
    void clear_led(unsigned char led_id) {
     if ((led_id&0xa0)==0xa0)
      PORTA&=~(1<<(led_id&0x0f));
     if ((led_id&0xb0)==0xb0)
      PORTB&=~(1<<(led_id&0x0f));
    }
    void tabLed(unsigned char led_id){
     unsigned char leds[]={LED4, LED5, LED6, LED7, LED8, LED9, LED10, LED11};
    }
    /*
    void LEDcontrol(unsigned char d){ // Début du Sous-programme LED1, on allume et éteind les leds de D4 à D11 l'une après l'autre
     unsigned int ma_variable_16bits = 0;
     ma_variable_16bits = d;
     for(;;){
      RA0_bit = 1 ;    //sortie RA0 à 1
      delay_ms(250);   //delai d'1/4 sec
      RA0_bit = 0 ;    //sortie RA0 à 0
      RB1_bit = 1 ;
      delay_ms(250);
      RB1_bit = 0 ;
      RB2_bit = 1 ;
      delay_ms(250);
      RB2_bit = 0 ;
      RB3_bit = 1 ;
      delay_ms(250);
      RB3_bit = 0 ;
      RB4_bit = 1 ;
      delay_ms(250);
      RB4_bit = 0 ;
      RB5_bit = 1 ;
      delay_ms(250);
      RB5_bit = 0 ;
      RB6_bit = 1 ;
      delay_ms(250);
      RB6_bit = 0 ;
      RB7_bit = 1 ;
      delay_ms(250);
      RB7_bit = 0 ;
     }
    } // Fin du sous-programme LED1
    */
    void main() {
     unsigned char donnee = 0b00000001;
     
     TRISA = 0b00000010; //port A en sortie sauf RA1
     PORTA = 0b11001000 ; //mettre les sorties à zéro sauf RA6, RA7,RA3
     TRISB = 0b00000001; //port B en sortie sauf RB_0
     PORTB = 0 ; //mettre les sorties à zéro
     pcon.OSCF = 1; //configure le bit 3 du registre pcon pour 4 Mhz
     CMCON = 0b00000111; //désactiver les comparateurs sur RA0
     
     while(1){
      set_led(tabLed);
      delay_ms(250);
      clear_led(tabLed);
      delay_ms(250);
     }
    }

  9. #69
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Ce n'est pas grave.

    Ta fonction disons play_mode1() :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void play_mode1(void)
    {
        const unsigned char leds[]= {LED4, LED5, ........ };
        const unsigned char leds_size= sizeof(leds)/sizeof(leds[0]);
        unsigned char i;
     
        for (i= 0; i < leds_size; i++) {
            set_led(leds[i]);
            delay_ms(250);
            clear_led(leds[i]);
        }
    }


    Ton while :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while (1) {
        play_mode1();
    }

  10. #70
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    Nickel ça fonctionne, les LED s'allument de la 4 à la 11 à l'infini
    Donc maintenant il faut gérer le bouton

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    #include <stdio.h>
     
    #define LED4 0xA0
    #define LED5 0xB1
    #define LED6 0xB2
    #define LED7 0xB3
    #define LED8 0xB4
    #define LED9 0xB5
    #define LED10 0xB6
    #define LED11 0xB7
     
    void set_led(unsigned char led_id) {
     if ((led_id&0xa0)==0xa0)
      PORTA|=(1<<(led_id&0x0f));
     if ((led_id&0xb0)==0xb0)
      PORTB|=(1<<(led_id&0x0f));
    }
     
    void clear_led(unsigned char led_id) {
     if ((led_id&0xa0)==0xa0)
      PORTA&=~(1<<(led_id&0x0f));
     if ((led_id&0xb0)==0xb0)
      PORTB&=~(1<<(led_id&0x0f));
    }
     
    void play_mode1(void)
    {
        unsigned char leds[]={LED4, LED5, LED6, LED7, LED8, LED9, LED10, LED11};
        const unsigned char leds_size=sizeof(leds)/sizeof(leds[0]);
        unsigned char i;
     
        for (i= 0; i < leds_size; i++) {
            set_led(leds[i]);
            delay_ms(250);
            clear_led(leds[i]);
        }
    }
     
    void main() {
     unsigned char donnee = 0b00000001;
     
     TRISA = 0b00000010; //port A en sortie sauf RA1
     PORTA = 0b11001000 ; //mettre les sorties à zéro sauf RA6, RA7,RA3
     TRISB = 0b00000001; //port B en sortie sauf RB_0
     PORTB = 0 ; //mettre les sorties à zéro
     pcon.OSCF = 1; //configure le bit 3 du registre pcon pour 4 Mhz
     CMCON = 0b00000111; //désactiver les comparateurs sur RA0
     
     while(1){
      play_mode1();
     }
    }

  11. #71
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Juste une petite remarque, en #64 les LED D5 à D11 sont câblé à l'envers. Elles ne peuvent pas s'allumer, peut être que l'outil Proteus en fait abstraction pendant la simulation ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  12. #72
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    Schéma imposé, c'est une contrainte en plus...

  13. #73
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Oui ça d'accord mais un schéma faux imposé c'est sacrément embêtant car c'est sur que ça va pas marcher. Si les LED sont à l'envers, aucune chance qu'elles s'allument même avec un code qui marche.

    Dans les autres schéma que tu as posté, comme en début de discussion, les LED étaient dans le bon sens.

    LED à l'envers dans ton message ici https://www.developpez.net/forums/d2.../#post11497483

    LED à l'endroit dans celui là https://www.developpez.net/forums/d2.../#post11491049

    Si j'étais toi je vérifierai ce point pour éviter de tourner en rond, à moins que le simulateur s'en fou ? Mais ça serait très étonnant. Ce que je veux dire c'est que tu peux te battre longtemps avec le code si jamais c'est le schéma qui ne va pas.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  14. #74
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    Et bien, c'est les mêmes.
    C'est juste dans la simulation avec Proteus, lorsqu'elle s'allume il la "retourne".
    Je ne sais pas pourquoi, mais c'est comme ça apparemment

    Nom : Capture1.PNG
Affichages : 280
Taille : 61,1 Ko

  15. #75
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Citation Envoyé par sparow1 Voir le message
    C'est jusque dans la simulation avec Proteus, lorsqu'elle s'allume il la "retourne".
    C'est parce qu'il te montre qu'elles sont à l'envers et c'est très certainement pour ça qu'elles s'allument en jaune.
    D1, D2 et D3, elles, sont à l'endroit.

    Visiblement, Proteus semble en tenir compte mais ne bloque pas le fonctionnement, donc ça va.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  16. #76
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    Effectivement... Maintenant c'est bon j'ai tout revérifié, c'est ok. Bien vu

    Mais avec ce code les led D1, D2 et D3 s'allument à certains moment.
    Nom : Capture.PNG
Affichages : 314
Taille : 57,7 Ko

    Donc maintenant il me faut gérer le bouton

  17. #77
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Euh non, seule D6 est à l'endroit.

    Citation Envoyé par sparow1
    Mais avec ce code les led D1, D2 et D3 s'allument à certains moment.
    Attention car il se peut que le simulateur soit perturbé par les mauvais câblages. Fait même très attention car peut être que tu n'arrives pas à mettre au point le logiciel à cause de ça.

    Voici ton image modifiée (j'ai fait de copier/coller) pour te montrer le bon sens des LED, que j'ai entouré avec des ronds violets

    Nom : circle870.png
Affichages : 305
Taille : 131,7 Ko
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  18. #78
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    Je les ai retourné juste avant je ne comprends plus rien

    Le schéma que j'ai depuis le début :
    Nom : schema proteus.PNG
Affichages : 324
Taille : 44,4 Ko

    Le schéma que j'ai depuis votre intervention en #75 :
    Nom : Capture.PNG
Affichages : 330
Taille : 57,7 Ko
    Nom : Capture2.PNG
Affichages : 323
Taille : 56,0 Ko

  19. #79
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Bonjour,

    Citation Envoyé par sparow1 Voir le message
    Donc maintenant il faut gérer le bouton
    Citation Envoyé par sparow1 Voir le message
    Donc maintenant il me faut gérer le bouton
    Tu fais bien de nuancer, mais ce n'est pas en te répétant que cela se fera tout seul.

    Petit rappel :
    Citation Envoyé par kaitlyn Voir le message
    Fais d'abord sans bouton, et après avec tout en expliquant le comportement que tu en attendais.
    Et donc on attend sur toi.

    Citation Envoyé par Vincent PETIT Voir le message
    C'est parce qu'il te montre qu'elles sont à l'envers et c'est très certainement pour ça qu'elles s'allument en jaune.
    Oui! Pour symboliser un courant inverse. Ça explique le prix, 6000 euros

  20. #80
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    La répétition n'était pas volontaire, je tourne juste en rond sur ce projet.. Je n'y arrive pas et j'ai l'impression de ne pas avancer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de communication PIC-PC via RS232
    Par jiji94 dans le forum C++
    Réponses: 0
    Dernier message: 04/04/2008, 19h26
  2. problème finalisation programme
    Par depelek dans le forum Installation, Déploiement et Sécurité
    Réponses: 9
    Dernier message: 02/05/2006, 16h17
  3. Problème de récup image via http://
    Par TK5EP dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2005, 19h59
  4. Réponses: 1
    Dernier message: 26/09/2005, 19h29
  5. Communication RS232 avec un PIC via delphi
    Par JeanPh dans le forum API, COM et SDKs
    Réponses: 22
    Dernier message: 09/08/2004, 22h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo