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

Arduino Discussion :

Roue à filtres bricolée avec position home


Sujet :

Arduino

  1. #1
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 223
    Points : 54
    Points
    54
    Par défaut Roue à filtres bricolée avec position home
    Bonjour à toutes et à tous,

    Généralement, et ce que font tous les astronomes amateurs bricoleurs, pour motorisez une roue à filtres, il faut, entre autre, un capteur à effet Hall pour détecter un champ magnétique qui indique la position initiale (home) de la roue à filtres. Cette manipulation demande une grande précision pour positionner le capteur et l'aimant de façon à ce que le moteur pas à pas utilisé s'arrête exactement à la position 0 (zéro) au moment du démarrage de la carte Arduino.

    Pour faciliter un peu le projet et pour un minimum d' "investissement" (si puis dire), pourquoi pas ne pas retourner la roue à la position zéro préalablement programmée dans le code Arduino lorsqu'on quitte le programme client de la roue à filtres ? Autrement dit, informatiquement parlant, est-ce qu'on peut ajouter un code de retour à la position zéro lorsqu'on déclenche l'événement "Fermer" ou "Close" de l'application cliente de la roue à filtres ? Est-ce que ça doit être au niveau code Arduino, driver ASCOM ou application cliente ?

    Ainsi, chaque fois qu'on travaille avec la roue à filtres et qu'on veut arrêter le programme après une nuit d'observation, le système ramène la roue à la position initiale et s'arrête pour qu'au prochaine observation, on démarre la roue à sa position Home.

    J'espère que vous me communiqueriez vos avis sur démarche et d'expliquer les avantages et inconvénients.
    Merci

    Hédi

  2. #2
    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
    Salut,
    Si je comprends bien, tu te demandes si on peut se passer du capteur de position moyennant un démarrage avec une position connue et un retour à cette position avant l'extinction ?

    C'est bien ça ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 223
    Points : 54
    Points
    54
    Par défaut
    Salut Vincent,

    Excatement ça, vous avez bien compris ! Car j'ai remarqué que le capteur détecte le champ qu'à partir d'une certaine distance qu'on la chercher aléatoirement et à la longue cette distance peut se "perdre" et on doit l'en chercher une autre !!!
    Mais, avec l'évènement "Fermer" d'une application (au niveau Arduino, driver ASCOM ou cliente Windows), on ramène la roue à sa position initiale avant l'arrêt de ce programme. Ainsi, lorsque démarre l'application, on est bien dans la position Home et la roue travaille convenablement durant la nuit d'observation.

  4. #4
    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
    Ce principe fonctionne bien en théorie mais en pratique c'est plus complexe malheureusement, même si le Arduino sait combien de pas il faut pour revenir à la position initiale.

    En cas d'effort mécanique ou si le disque rencontre un résistance, des pas du moteurs peuvent sauter idem lors d'une accélération trop rapide. Le Arduino n'a aucun moyen de s'en rendre compte. En cas de coupure d'alimentation le Arduino perd sa capacité à retrouver la position de départ car quand l'alimentation va revenir tout va redémarrer de zéro et si le disque était dans une certaine position, celle-ci est perdue.

    Tu as raison de te poser cette question car c'est un des principaux problèmes de l'électronicien "la condition de démarrage".

    - Si tu choisis de te passer d'un capteur de position alors il te faut lister tout ce qui peut arriver et qui te ferait perdre cette information, pour y palier. Par exemple, mesurer la tension d'alimentation et prévoir un gros condensateur en guise de réservoir d'énergie pour qu'en cas de coupure de courant, le Arduino ait le temps de sauvegarder la position du moteur (le nombre de pas depuis le début) pour qu'au prochain démarrage il fasse un décompte de ce nombre de pas afin de faire revenir le moteur à son origine. Concernant les loupés du moteur donc du nombre de pas, il n'y a pas de solution. Tout ceci demande la mise en place d'une électronique pas forcément simple à dimensionner sans compter qu'on peut se heurter a des problèmes de taille comme l'inertie de la pièce reliée au moteur qui n'est plus alimenté. Et si jamais tout est hors tension et que quelque chose fait que le disque tourne encore, même pas longtemps ? Comment savoir où est ce qu'il s'est arrêté ?

    - Si tu prends un capteur de position, tu t'affranchis de tous ces problèmes (c'est le cas dans toutes les imprimantes a jet d'encre entres autres, au démarrage de l'impression elles vont au point zéro via des capteurs de position)
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    bonsoir,

    un tel projet a été développé ici :
    https://www.developpez.net/forums/d1...o/#post8586806

  6. #6
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 223
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    Auteur, oui je l'ai vu et j'ai bien suivi ce projet et finalement il a utilisé un capteur à effet Hall.
    Effectivement Vincent, vous avez raison. Je n'ai pas pensé à la coupure de courant qui chambarde tout et la roue s'arrête à n'importe quelle position. Bien réfléchie Vincent.
    Donc, en conclusion, le capteur est indispensable pour détecter la position Home de la roue. Le problème est qu'il faut tâtonner pour trouver la position entre l'aimant et le capteur pour que la roue s'arrête au bon moment à la bonne place ! Y a t-il une relation entre le champ magnétique et le capteur pour déterminer cette distance avec précision ?

  7. #7
    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
    Salut,
    Un tel calcul est très compliqué.

    D'une part il faudrait connaitre la valeur du champs magnétique de l'aimant (exprimé en gauss à sa surface) ensuite prendre en compte l'atténuation de ce champs qui est proportionnel au carré de la distance et encore c'est presque constant à une distance très petite et on est plutôt au cube de la distance à très grande distance. Le tout dépend aussi de l'environnement proche.

    Par exemple : Le champs magnétique d'un aimant de 1000 gauss ne vaudra plus que 40 gauss à 5mm de distance

    Formule mathématique

    D'autre part tout dépend du capteur, de sa sensibilité et de la nature de sortie de l'information. Certains capteurs délivrent une tension image précise du champs magnétique (mesure des courants par exemple) et d'autres qui activent une sortie si le champs magnétique est supérieure à une consigne (interrupteurs de proximité par exemple).

    Généralement dans ton cas, on se contente de détecter la proximité à la louche car le but n'est pas de mesurer le champs de l'aimant mais de le détecter.

    Il y a aussi l'approche optique (6.4) :

    Nom : im10.png
Affichages : 652
Taille : 58,3 Ko
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  8. #8
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 223
    Points : 54
    Points
    54
    Par défaut
    Eh oui Vincent, en effet, j'étais obligé à choisir la distance entre l'aimant et le capteur empiriquement ! Merci pour le conseil

    Autre chose, j'ai ajouté au projet un LED RGB à cathode commune afin d'indiquer la couleur du filter sélectionner : Filtre rouge, LED s'allume en rouge, filtre ver, LED s'allume en vert et ainsi de suite. J'ai ajouté un autre LED simple de couleur rouge qui s'allume lorsque la roue tourne pour aller au filtre choisi. De ce fait, j'ai rencontré un petit problème : lorsque la roue tourne, le LED RGB s'allume en blanc avec un clignotement très rapide ! Comment puis-je éteindre ce LED pendant que la roue à filtres tourne ?

  9. #9
    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
    Peux tu nous poster ton programme ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  10. #10
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 223
    Points : 54
    Points
    54
    Par défaut
    Salut Vincent,

    Je m'excuse du retard ! C'était un problème de connexion Internet !

    Je vous transmet le code ici:
    Code : 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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
     
    #include <AccelStepper.h>
     
    // General definitions
    int CurrentFilter = 0;              // filter integer
    int HallValue;                      // Hall switch variable
     
    // Colors (RGB format)
    const byte COLOR_BLACK = 0b000;
    const byte COLOR_RED   = 0b100;
    const byte COLOR_GREEN = 0b010;
    const byte COLOR_BLUE  = 0b001;
     
    // Color pins
    const byte PIN_LED_R = 9;
    const byte PIN_LED_G = 10;
    const byte PIN_LED_B = 11;
     
    // Filter steps defintions
    int CalibrationOffset = 70;         // Steps required to move to first position after calibration is done
    int FilterSteps = 3244.5;//819.2; 3186.5           // Steps required to move the filter to next location adjust as required to suit motor wheel combination
    int FilterSteps0 = 0;               // Set filter steps for home position from calibration
    int FilterSteps1 = -FilterSteps;     // Set filter steps for 1st position
    int FilterSteps2 = -FilterSteps * 2; // Set filter steps for 2nd position
    int FilterSteps3 = -FilterSteps * 3; // Set filter steps for 3rd position
    int FilterSteps4 = -FilterSteps * 4; // Set filter steps for 4th position
     
    // Hall pin defintion
    const int out = 12;                 // PIN 12 = Hall effect switch
     
    // Motor definitions
    #define STEPS 8                     // 28BYJ-48 steps 4 or 8
     
    // Motor pin defintions
    #define motorPin1 8                 // IN1 on UL2003
    #define motorPin2 9                 // IN2 on UL2003
    #define motorPin3 10                // IN3 on UL2003
    #define motorPin4 11                // IN4 on UL2003
     
    // Initializa with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper with 28BYJ-48
    AccelStepper stepper1(STEPS, motorPin1, motorPin3, motorPin2, motorPin4);
     
    void setup() {
      // Initialization of color pins
      pinMode(PIN_LED_R, OUTPUT);
      pinMode(PIN_LED_G, OUTPUT);
      pinMode(PIN_LED_B, OUTPUT);
      displayColor(COLOR_BLACK);
     
      // Intialize the blinking LED
      //pinMode(PIN_LED_BLNK, OUTPUT);
     
      Serial.flush();
      Serial.begin(9600);         // Baud rate, make sure this is the same as ASCOM driver
      stepper1.setMaxSpeed(1000.0);
      stepper1.setAcceleration(1000.0); // Acceleration
      stepper1.setSpeed(1000.0);
      stepperHome(); // runs routine to home position
      Serial.println("1#");
    }
     
    void loop() {
      String cmd;
      displayColor(COLOR_BLACK);
      if (Serial.available() > 0) {
        cmd = Serial.readStringUntil('#'); // Teerminator so arduino knows when the message ends
        if (cmd == "GETFILTER") {
          Serial.print(CurrentFilter); Serial.println("#"); // Similary, so ASCOM knows
        }
        else if (cmd == "FILTER0") MoveFilter(0); // Move Filter Routine
        else if (cmd == "FILTER1") MoveFilter(1); // Move Filter Routine
        else if (cmd == "FILTER2") MoveFilter(2); // Move Filter Routine
        else if (cmd == "FILTER3") MoveFilter(3); // Move Filter Routine
        else if (cmd == "FILTER4") MoveFilter(4); // Move Filter Routine
        else if (cmd == "FILTER5") MoveFilter(5); // Move Filter Routine
      }
    }
     
    void MoveFilter(int pos) {
      CurrentFilter = pos;        // Note that the position is always 0 when powered on due to calibration
      displayColor(COLOR_BLACK);
      switch (CurrentFilter) {
        case 0:
          digitalWrite(13, HIGH); // flash LEDs for move
          stepper1.runToNewPosition(FilterSteps0); // Goto new position
          Serial.print(CurrentFilter); Serial.println("#"); // Notify that we sent the command
          digitalWrite(13, LOW); // Disable LEDs after Move
     
          // Black Color
          displayColor(COLOR_BLACK);
        break;
     
        case 1:
          displayColor(COLOR_BLACK);
          digitalWrite(13, HIGH); // flash LEDs for Move
          stepper1.runToNewPosition(FilterSteps1); // Goto new position
          Serial.print(CurrentFilter); Serial.println("#"); // Notify rhat we sent the command
          digitalWrite(13, LOW); // Disable LEDs after Move
     
          //Red Color
          displayColor(COLOR_RED);
        break;
     
        case 2:
          displayColor(COLOR_BLACK);
          digitalWrite(13, HIGH); // flash LEDs for Move
          stepper1.runToNewPosition(FilterSteps2); // Goto new position
          Serial.print(CurrentFilter); Serial.println("#"); // Notify that we sent the command
          digitalWrite(13, LOW); // Disable LEDs after Move
          // Green Color
          displayColor(COLOR_GREEN);
        break;
     
        case 3:
          displayColor(COLOR_BLACK);
          digitalWrite(13, HIGH); // flah LEDs for Move
          stepper1.runToNewPosition(FilterSteps3); // Goto new position
          Serial.print(CurrentFilter); Serial.println("#"); // Notify that we sent the command
          digitalWrite(13, LOW); // Disable LEDs after Move
     
          // Blue Color
          displayColor(COLOR_BLUE);
        break;
     
        case 4:
          displayColor(COLOR_BLACK);
          digitalWrite(13, HIGH); // Flash LEDs for Move
          stepper1.runToNewPosition(FilterSteps4); // Goto new position
          Serial.print(CurrentFilter); Serial.println("#"); // Notify that we sent the command
          digitalWrite(13, LOW);
     
          // Black Color
          displayColor(COLOR_BLACK);
        break;
     
        case 5:
          stepperHome(); // Calibration Routine
          Serial.print(CurrentFilter); Serial.println("#"); // Notify that we sent the command
     
          // Black Color
          displayColor(COLOR_BLACK);
        break;
      }
    }
     
    void stepperHome()
    {
      HallValue = digitalRead(out);    // read the Hall sensor value
      digitalWrite(13, HIGH);          // Flash LEDs for Move
     
      while (HallValue == HIGH)
      {
        stepper1.setAcceleration(1000.0); // Acceleration
        stepper1.setSpeed(1000.0);
        stepper1.move(20);
        stepper1.run();
        HallValue = digitalRead(out); // read the Hall sensor value
      }
     
      stepper1.setCurrentPosition(0);
      stepper1.runToNewPosition(CalibrationOffset);
      stepper1.setCurrentPosition(0);
     
      digitalWrite(13, LOW);
      displayColor(COLOR_BLACK);
    }
     
    // Display one color
    void displayColor(byte color) {
      // Assigne states of pins
      // Commune Cathode version
      digitalWrite(PIN_LED_R, bitRead(color, 2));
      digitalWrite(PIN_LED_G, bitRead(color, 1));
      digitalWrite(PIN_LED_B, bitRead(color, 0));
    }

  11. #11
    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
    Salut,
    Peux tu mettre en commentaire cette ligne et me décrire ce qui se passe au niveau de la LED RGB ?

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    void loop() {
      String cmd;
      /*displayColor(COLOR_BLACK);*/ // <- Mettre en commentaire cette ligne !
      if (Serial.available() > 0) {
    ...
    ...
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  12. #12
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 223
    Points : 54
    Points
    54
    Par défaut
    Bonsoir Vincent,

    J'ai mis en commentaire cette ligne. Au démarrage de l'Arduino, la lampe ne s'allume pas, mais dès qu'il ya un mouvement de la roue à filtre, la lampe s'allume !!!

  13. #13
    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
    Tu peux mettre en commentaire tous les displayColor(COLOR_BLACK); ?
    Ta LED RGB devrait prendre les couleurs de la roue et uniquement celle là, est ce le cas ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  14. #14
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 223
    Points : 54
    Points
    54
    Par défaut
    Malheureusement non !
    Toujours le même phénomène : elle s'allume en lumière blanche au cours du déplacement de la rue à filtre !

  15. #15
    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
    Dans ce cas, retire tout appel de displayColor(); et observe la LED RGB. Si elle s'allume toujours alors il y a un problème qui dépasse le logiciel.
    Qu'est ce qui se passe si tu fais ça ?

    Question, c'est quoi cette ligne digitalWrite(13, LOW); // Disable LEDs after Move ???
    C'est une autre LED ? Ce n'est pas celle ci qui clignote rapidement ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  16. #16
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 223
    Points : 54
    Points
    54
    Par défaut
    Oui, en effet, il y a une autre LED rouge qui s'allume lorsque la roue à filtres se déplace d'un filtre à un autre et s'éteint lorsqu'elle la roue s'arrête. Ceci m'indique l'état de la roue.
    Je t'envoie deux images du projets : l'une représentant le projet en globalité et l'autre met en évidence les deux LED.
    Nom : IMG_20170921_120344.jpg
Affichages : 700
Taille : 906,0 Ko
    Nom : IMG_20170921_120406.jpg
Affichages : 632
Taille : 901,4 Ko

  17. #17
    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
    Je trouve étrange que la led RGB s'allume blanche alors que nul part dans le programme on ne voit de displayColor(COLOR_WHITE);D'où ma proposition de retirer du programme tous les appels à displayColor(xxx); afin de vérifier si la LED ne s'allume pas malgré tout.

    As tu pu essayer ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  18. #18
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 223
    Points : 54
    Points
    54
    Par défaut
    Bonjour Vincent,

    J'ai essayé votre conseil, mais malheureusement ça ne marche pas ! Bon, j'ai laissé un appel displayColor(COLOR_WHITE); dans la fonction Setup() et la fonction SetHome() pour qu'à l'initialisation et au démarrage du système, la lampe s'éteint.

    Je vais essayer de faire une petite vidéo du résultat ce soir, ça peut vous aider d'une certaine manière.
    Merci encore une fois pour votre soutien et votre aide,

    Hedi

  19. #19
    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
    Hummm...
    Dans le programme complet un peu plus haut j'ai vu plein de displayColor(COLOR_BLACK); et je pensais que c'était pour éteindre la Led. Hors tu dis que c'est displayColor(COLOR_WHITE); qui éteint la Led ?

    Quel effet produit un displayColor(COLOR_BLACK); sur la Led ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  20. #20
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 223
    Points : 54
    Points
    54
    Par défaut
    La displayColor(COLOR_WHITE); est appelée pour que la LED s'allume en blanc pour indiquer que c'est le filtre Luminance. displayColor(COLOR_BLACK); est appelée pour dire que la roue à filtre est positionnée dans la position Home qui indique un trou libre dans la roue :-) En effet, j'ai 4 filtres : Luminance, Rouge, Vert et Bleu. La roue possède 5 positions de filtres dont la 5ème est libre.
    Je vous rappelle que la LED est à Cathode Commune.

    Cordialement,
    Hedi

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/12/2006, 12h46
  2. Position de la souris incompatible avec *{position:absolute} ?
    Par benjiiim dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/09/2006, 17h05
  3. Permissions NTFS avec XP Home
    Par Loceka dans le forum Sécurité
    Réponses: 2
    Dernier message: 10/09/2006, 11h32
  4. [CSS] défi avec position absolute et relative
    Par pmartin8 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 30/11/2005, 18h15
  5. [xml-xsl] Probleme avec position()
    Par seb30 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/04/2005, 11h10

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