Étape 4: Ce que fait l’esquisse
Le croquis est assez simple, mais elle illustre encore plusieurs concepts de programmation.
Tout d’abord, l’esquisse Initialise plusieurs variables qui sont utilisées plus tard dans le sketch. Ainsi que les broches, que nous allons utiliser, nous initialisons la variable pour les tarifs minimum et maximum blink, deux pour stocker les valeurs de temps et l’autre pour savoir si la LED doit être activée ou désactivée.
Ces variables sont initialisées à l’extérieur de toute fonction, elles sont dans la portée globale. Cela signifie qu’ils peuvent être utilisés et modifiées n’importe où dans le code et les modifications persisteront. Cela deviendra important plus tard.
Ensuite est la fonction setup(). Ici, nous utilisons pinMode() pour mettre en place les chevilles, une pour l’entrée (le curseur) et une pour la sortie (la LED). Puis on lit la valeur du fourreau... vous n’avez pas à attendre loop() pour lire une valeur aussi longtemps que la goupille à mettre en place.
Après setup(), loop() fonctionne encore et encore jusqu'à ce que l’alimentation est coupée. Nous ne pas initialiser toutes les variables ici parce que tout ce dont nous avons besoin est déjà dans la portée globale.
Tout d’abord, nous obtenons l’heure actuelle en appelant millis() et qui mettre en t.
Ensuite nous lire la valeur de la diapositive variateur dans sldr_val. Je dois souligner ici que les valeurs que nous obtenons ici devraient être 0 à 1023, mais du gradateur Slide peut ne pas donner des valeurs ce haut.
Maintenant, nous vérifions si nous devrions faire quelque chose. Nous faisons cela en comparant le temps écoulé depuis l’itération précédente de loop() à blink_val. Lorsque loop() s’exécute la première fois, la fois précédente (l) et blink_val ont déjà été définis sur 0, donc cela fonctionne toujours. Si le temps est écoulé, il est temps de faire quelque chose, que nous entrons dans le bloc « if » et commencer à faire des choses.
Nous envoie la valeur de la diapositive Dimmer (qui nous viens de lire) à la série monitor.
Ensuite, nous mettons à jour la valeur de blink_val à l’aide d’un bilt en fonction appelée map() (lire plus à ce sujet à http://arduino.cc/en/Reference/Map). Carte prend une variable et ajuste d’une plage à une autre plage. La première plage est ce qui pourrait être la valeur Slide variateur, et le deuxième se situe ce que nous voulons ; Nous avons déjà initialisé les limites de cette gamme au sommet de l’esquisse comme timeoutmin_rate et max_rate.
Maintenant, nous avons une valeur mise à jour pour blink_rate à comparer avec le temps cette itération de loop() est passé au plus tard.
L’étape suivante écrit sur la broche de que la LED est allumée, faisant ainsi le voyant allumé ou éteint. La syntaxe utilisée pour cela est très compacte, donc je vais l’expliquer.
Un appel à digitalWrite() prend deux arguments : la goupille et la valeur à écrire. Notre premier argument ici est la variable pour la goupille de LED, led_pin. Le deuxième argument n’est pas une valeur, ou même une variable... c’est une expression.
Parce que cette broche est en mode numérique, il peut comprendre seulement deux valeurs : true ou false. Les constantes de haute et basse sont des alias de vrai et faux, donc lorsque vous utilisez haute, vous êtes effectivement en passant true.
De toute façon, de retour à notre expression. C’est un opérateur ternaire, qui est une sorte de raccourci pour if/else code blocks. Nous avons enveloppé l’opérateur ternaire entre parenthèses pour plus de clarté. Malheureusement, ceux-ci ne sont pas documentés dans la section Références du site Arduino, alors lisez la suite ici.
Un opérateur ternaire comporte trois parties. La première partie est une autre expression qui évalue l’opérateur ternaire. Elle est suivie d’un point d’interrogation.
La deuxième partie est la valeur retournée par l’opérateur ternaire, si la première partie prend la valeur true. Il est suivi par un signe deux-points.
La troisième partie est la valeur retournée par l’opérateur ternaire, si la première partie n’est pas correspondre à un vrai (en d’autres termes, false).
Notre première partie est notre variable o, qui est la valeur booléenne que nous définis au début de l’esquisse. Notre deuxième partie est élevée, et notre deuxième partie est faible.
Si o est true, haute est écrit à la broche, sinon faible est écrit.
Autres vétérans programmation vont probablement dire « mais vous pourriez passer juste o directement et pas s’embêter avec un ternaire » et la droite car o est une valeur booléenne et il va être false (HIGH est un alias de) ou false (ce qui est un alias de). Je l’ai utilisé ici pour illustrer en quoi consiste un opérateur ternaire.
Après cela, nous nous préparons pour l’avenir. Nous inversons o (vrai devient faux, faux devient vrai), puis mettez à jour la l heure précédente à la valeur de l’actuel temps t.
Mais il y a autre chose passe ici. De cette façon d’utiliser o en combinaison avec la LED, nous avons créé une Machine d’État pour la LED. En électronique, est une machine à États
Un dispositif qui peut être dans l’un d’un certain nombre de conditions stables en fonction de son état antérieur et sur la valeur actualisée de ses entrées.
Notre machine d’État possède seulement deux États, sur et en dehors.