Maintenant que vous maîtrisez les bases de l'électricité, il est temps de passer au contrôle de composants avec votre Arduino. Dans ce projet, vous allez construire quelque chose qui aurait pu être l'interface d'un vaisseau spatial dans un film de science-fiction des années 1970. Vous fabriquerez un panneau de commande sympathique doté d'un interrupteur et de voyants qui s'allument lorsque vous l'actionnez. Vous pouvez décider si les voyants signifient « Activer l'hyperpropulsion » ou « Feu sur les lasers ! ». Une LED verte restera allumée jusqu'à ce que vous appuyiez sur un bouton. Lorsque l'Arduino reçoit un signal provenant du bouton, la lumière verte s'éteint et deux autres voyants se mettent à clignoter.
Les broches numériques de l'Arduino ne peuvent lire que deux états : lorsqu'il y a de la tension sur une broche d'entrée, et lorsqu'il n'y en a pas. Ce type d'entrée est généralement appelé numérique (ou parfois binaire, pour deux états). Ces états sont communément désignés par les termes HIGH et LOW. HIGH revient à dire « il y a de la tension ici ! » et LOW signifie « il n'y a pas de tension sur cette broche ! ». Lorsque vous mettez une broche de SORTIE (OUTPUT) à l'état HIGH à l'aide d'une commande appelée digitalWrite(), vous l'activez. Si vous mesurez la tension entre la broche et la masse, vous obtiendrez 5 volts. Lorsque vous mettez une broche de SORTIE à l'état LOW, vous la désactivez.
Les broches numériques de l'Arduino peuvent agir à la fois comme des entrées et des sorties. Dans votre code, vous les configurerez en fonction de ce que vous souhaitez qu'elles fassent. Lorsque les broches sont des sorties, vous pouvez piloter des composants tels que des LED. Si vous configurez les broches comme des entrées, vous pouvez vérifier si un interrupteur est enfoncé ou non. Étant donné que les broches 0 et 1 sont utilisées pour communiquer avec l'ordinateur, il est préférable de commencer à partir de la broche 2.
1-Connectez votre plaque d'essai aux connexions 5V et de masse de l'Arduino, tout comme dans le projet précédent. Placez les deux LED rouges et une LED verte sur la plaque d'essai. Raccordez la cathode (patte courte) de chaque LED à la masse par l'intermédiaire d'une résistance de 220 ohms. Connectez l'anode (patte longue) de la LED verte à la broche 3. Connectez les anodes des LED rouges respectivement aux broches 4 et 5.
2-Placez l'interrupteur sur la plaque d'essai tout comme vous l'avez fait dans le projet précédent. Connectez un côté à l'alimentation et l'autre côté à la broche numérique 2 de l'Arduino. Vous devrez également ajouter une résistance de 10 kilo-ohms allant de la masse à la broche de l'interrupteur qui se connecte à l'Arduino. Cette résistance de tirage (pull-down) connecte la broche à la masse lorsque l'interrupteur est ouvert, de sorte qu'elle indique LOW lorsqu'aucune tension ne provient de l'interrupteur.
Quelles sont vos notes ou instructions avant que l'on ne commence ?
Chaque programme Arduino comporte deux fonctions principales. Les fonctions sont des parties d'un programme informatique qui exécutent des commandes spécifiques. Les fonctions ont des noms uniques et sont « appelées » en cas besoin. Les fonctions nécessaires dans un programme Arduino s'appellent setup() et loop(). Ces fonctions doivent être déclarées, ce qui signifie que vous devez dire à l'Arduino ce que ces fonctions vont faire. setup() et loop() sont déclarées comme vous le voyez à droite.
Dans ce programme, vous allez créer une variable avant d'entrer dans la partie principale du programme. Les variables sont des noms que vous donnez à des emplacements dans la mémoire de l'Arduino afin de pouvoir suivre ce qui se passe. Ces valeurs peuvent changer en fonction des instructions de votre programme. Les noms de variables doivent décrire la valeur qu'ils stockent. Par exemple, une variable nommée switchState indique ce qu'elle stocke : l'état d'un interrupteur. En revanche, une variable nommée « x » ne vous dit pas grand-chose sur ce qu'elle stocke.
Pour créer une variable, vous devez déclarer de quel type elle est. Le type de données int contiendra un nombre entier (également appelé entier) ; c'est-à-dire n'importe quel nombre sans point décimal. Lorsque vous déclarez une variable, vous lui donnez généralement aussi une valeur initiale. La déclaration de la variable, comme chaque instruction, doit se terminer par un point-virgule (;).
La fonction setup() s'exécute une seule fois, lorsque l'Arduino est mis sous tension pour la première fois. C'est ici que vous configurez les broches numériques pour qu'elles soient soit des entrées, soit des sorties à l'aide d'une fonction nommée pinMode(). Les broches connectées aux LED seront des sorties (OUTPUT) et la broche de l'interrupteur sera une entrée (INPUT).
La fonction loop() s'exécute en continu après la fin de setup(). C'est dans loop() que vous vérifiez la présence de tension sur les entrées et que vous activez ou désactivez les sorties. Pour vérifier le niveau de tension sur une entrée numérique, vous utilisez la fonction digitalRead() qui vérifie la présence de tension sur la broche choisie. Pour savoir quelle broche vérifier, digitalRead() attend un argument.
Les arguments sont des informations que vous transmettez aux fonctions, leur indiquant comment faire leur travail. Par exemple, digitalRead() a besoin d'un seul argument : quelle broche vérifier. Dans votre programme, digitalRead() va vérifier l'état de
void setup(){
}
void loop(){
}
int switchState = 0;
void setup(){
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(2,INPUT);
}
void loop(){
switchState = digitaRead(2);
la broche 2 et stocke la valeur dans la variable switchState. S'il y a de la tension sur la broche lorsque digitalRead() est appelé, la variable switchState prend la valeur HIGH (ou 1). S'il n'y a pas de tension sur la broche, switchState prend la valeur LOW (ou 0).
Plus haut, vous avez utilisé le mot if pour vérifier l'état de quelque chose (à savoir, la position de l'interrupteur). Une instruction if() en programmation compare deux éléments et détermine si la comparaison est vraie ou fausse. Ensuite, elle exécute les actions que vous lui demandez. Lorsque vous comparez deux éléments en programmation, vous utilisez deux signes Égal ==. Si vous utilisez un seul signe, vous attribuerez (définirez) une valeur au lieu de la comparer.
digitalWrite() est la commande qui vous permet d'envoyer 5V ou 0V à une broche de sortie. digitalWrite() prend deux arguments : quelle broche contrôler, et quelle valeur définir pour cette broche (HIGH ou LOW). Si vous souhaitez allumer les LED rouges et éteindre la LED verte à l'intérieur de votre instruction if(), votre code ressemblera à ceci.
Vous avez indiqué à l'Arduino quoi faire lorsque l'interrupteur est ouvert. Définissez maintenant ce qui se passe lorsque l'interrupteur est fermé. L'instruction if() possède un composant optionnel else (sinon) qui permet de réaliser une action si la condition initiale n'est pas remplie. Dans ce cas, puisque vous avez vérifié si l'interrupteur était à l'état LOW, écrivez le code pour la condition HIGH après l'instruction else.
Pour faire clignoter les LED rouges lorsque le bouton est enfoncé, vous devrez éteindre et rallumer les voyants dans l'instruction else que vous venez d'écrire. Pour ce faire, modifiez le code afin qu'il ressemble à ceci.
Après avoir réglé les LED sur un certain état, vous voudrez que l'Arduino fasse une pause d'un instant avant de les modifier à nouveau. Si vous n'attendez pas, les voyants alterneront si rapidement qu'ils auront l'air simplement un peu tamisés, et non pas allumés et éteints. Cela s'explique par le fait que l'Arduino exécute sa boucle loop() des milliers de fois par seconde, et que la LED sera allumée et éteinte plus rapidement que notre perception ne peut le saisir.
La fonction delay() vous permet d'empêcher l'Arduino d'exécuter quoi que ce soit pendant une période donnée. delay() prend un argument qui détermine le nombre de millisecondes avant d'exécuter la série d'instructions suivante. Il y a 1 000 millisecondes dans une seconde. delay(250) fera une pause d'un quart de seconde.
if (switchState == LOW) {
// the button is not pressed
digitalWrite(3, HIGH); // green LED
| digitalWrite(4, LOW); digitalWrite(5, LOW); | // red LED// red LED |
}
else { // the button is pressed digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, HIGH);
delay(250); // wait for a quarter second
// toggle the LEDs
digitalWrite(4, HIGH); digitalWrite(5, LOW);
delay(250); // wait for a quarter second
}
} // go back to the beginning of the loop

Aucun commentaire:
Enregistrer un commentaire