Page 86 - arduino_Neat
P. 86

determinerCapteurBase(); // trouver la valeur de base du capteur.
            }
            void loop()
            {
                // montrerValeurCapteur();
                // testerServoMoteur();
                modifierPosSelonCapteur(); // lire la pin du capteur et mettre dans valeurCapteur.
                decroitreServoPos(); // faire decroître "la peur" de la petite bete.
                servo1.write(servoPos); // assigner la position du servomoteur qui a ete changee
                delay(20);
            }
            void modifierPosSelonCapteur()
            {
                int difference = 0; // déclarer variable locale pour calculer difference
                valeurCapteur = analogRead(pinCapteur); // lire la pin du capteur et mettre dans
            valeurCapteur
                difference = capteurBase - valeurCapteur; // calculer l'écart entre valeur actuelle et la
            base
                difference = max(difference, 0); // limiter différence à 0 (pas de chiffre négatif)
                /* pour débugger les valeurs et comprendre ce qui se passe
                Serial.print(valeurCapteur);
                Serial.print(" - ");
                Serial.print(capteurBase);
                Serial.print(" -- ");
                Serial.println(difference); // imprimer différence pour debug
                */
                servoPos = min ( servoPos + difference, 180) ; // modifier la valeur de position du servo
            }
            void determinerCapteurBase()
            {
                servo1.write(0); // positionner le moteur à la position de départ
                delay(2000); // laisser le temps au moteur de se placer
                capteurBase = analogRead(pinCapteur); // assigner la lecture actuelle à capteurBase
            }
            void decroitreServoPos()
            {
                servoPos = max ( servoPos - 10, 0); // faire décroitre servoPos
            }
            void testerServoMoteur()
            {
                while (1==1)
                    {
                    servoPos = random(181); // attribuer une valeur aléatoire comprise entre 0 et 180 à
            servoPos
                    servo1.write(servoPos); // spécifier la position au servomoteur
                    delay(2000); // attendre 2 secondes
                }
            }
            void montrerValeurCapteur()
            {
                while (1==1)
                    {
                    valeurCapteur = analogRead(pinCapteur); // lire la pin analogique et mettre la valeur
            dans valeurCapteur
                    Serial.println(valeurCapteur); // communiquer au moniteur sériel la valeur du capteur.
                }
            }
            Voici les ajouts faits à ce programme.

            Déclaration des variables

            capteurBase Nous ajoutons à notre code cette variable qui nous permettra de garder en
            mémoire la valeur de base du capteur. Celle-ci nous sera utile pour calculer l'écart entre la
            valeur mesurée en temps réel (donc affectée par l'ombre que crée le doigt ou la main qui
            s'approche) et celle de base, sans ombre.
            Configuration (setup)






            86
   81   82   83   84   85   86   87   88   89   90   91