Page 75 - arduino_Neat
P. 75

}
            void loop()
            {
                // boucle pour faire accélérer le moteur
                for (int i = 0 ; i <= 255 ; i++)
                {
                    //envoyer la valeur de 0 à 255
                    analogWrite( pinMoteur, i);
                    // attendre 10 millisecondes pour donner le temps de réaliser l'accélération
                    delay(10);
                }
                // boucle pour faire décélérer le moteur
                for (int j = 0 ; j <= 255 ; j++)
                {
                    //envoyer la valeur de 255 à 0
                    analogWrite( pinMoteur, 255 - j);
                    // attendre 10 millisecondes pour donner le temps de réaliser l'accélération
                    delay(10);
                }
            }
            Le code ci-dessus nous permet d'abord de tester le contrôle du moteur. Nous utilisons la
            commande analogWrite(); pour envoyer un signal au transistor. Pour plus d'information sur le
            PWM, veuillez lire la partie « Entrées / Sorties » du chapitre « Micro-contrôleurs » de la section
            « Électronique ». Ce signal nous permet de varier la vitesse de rotation du moteur en envoyant
            de courtes impulsions « on/off ». La commande analogWrite(); prend deux paramètres : la pin
            à laquelle nous voulons nous adresser et une valeur entre 0 et 255, correspondant dans notre
            projet à une intensité « très faible » pour le 0 jusqu'à une quasi-pleine intensité pour 255.
            L'autre fonction que nous utilisons dans ce programme est la boucle for();. Celle-ci permet de
            répéter un certain nombre de fois une série d'instructions. Dans notre code, nous répétons 256
            fois la commande analogWrite(); en incrémentant à chaque fois la valeur passée en
            paramètre. Notre boucle for(); nécessite l'utilisation d'une variable et la spécification de trois
            instructions pour son bon fonctionnement :

            for (int i = 0 ; i <= 255 ; i++)
               1.  le premier élément déclare la variable à utiliser et son état de départ. Dans notre
                exemple, nous déclarons la variable : int i = 0;
              2.  le second élément précise la condition à remplir pour arrêter la boucle : i <= 255; ceci
                signifie que tant que i sera plus petite ou égale à 255, les instructions comprises entre les
                accolades seront répétées.
              3.  le dernier élément précise l'opération à exécuter après chaque boucle : i++;. Donc, une
                fois que les instructions entre accolades sont exécutées une première fois, la valeur de i
                sera incrémentée de 1. i++; est un raccourci qui est équivalent à écrire i = i + 1;.
            Au départ, i prend donc la valeur 0. Nous spécifions cette valeur à analogWrite();. Puis, le
            programme attend 10 millisecondes avec la fonction delay(10); pour laisser un temps au moteur
            de bouger un peu. Un délai plus long ferait en sorte que le moteur change d'état plus
            lentement (la boucle s'exécuterait avec plus de temps d'attente entre chaque étape). Lorsque
            ces instructions sont terminées, la boucle reprend et i est incrémenté. La variable a donc
            maintenant une valeur de 1. La condition est testée i <= 255 et retourne “faux”, donc la boucle
            continue. Les instructions sont exécutées, le moteur tourne un peu plus vite et i est ensuite
            incrémenté à 2. Et ainsi de suite jusqu'à ce que i soit incrémenté à 256, qui rend la condition
            "vraie" et qui fait sortir le programme de la boucle for();.
            La deuxième boucle du programme s'exécute de la même manière, à la différence que nous
            utilisons la variable j et que pour effectuer une décélération du moteur, nous utilisons
            l'opération 255-j pour spécifier la valeur à prendre pour analogWrite(). En effet, lorsque j est
            égal à 0, la valeur retournée par 255-j est égale à 255. Et ainsi de suite. Notre boucle for()
            passera donc en réalité les valeurs de 255 à 0 à analogWrite().
            DEUXIÈME ÉTAPE

            Dans cette deuxième étape, notre Arduino se dévouera pour fumer à votre place. Nous
            connecterons donc le capteur de souffle et modifierons le code pour que lorsque vous
            soufflez ou aspirez près du micro électret, l'arduino active sa micro pompe.

                                                                                    75
   70   71   72   73   74   75   76   77   78   79   80