Etape 11 : ELECTRONICS partie 3: flux logique et le contrôle des composants
COMMANDE DE SERVO
Cet exemple utilise un servo de rotation des stocks continue, relié à l’Arduino dans la configuration suivante.
** NOTE : Le fil de commande (en général jaune ou brun) peut être connecté à n’importe quel broche numérique, dans cette situation qu'il est connecté à la broche numérique 3.
Les commutateurs de limite supérieure et inférieure sont câblés dans cette configuration.
La ligne "#include < servo.h >" importe la bibliothèque de servo. Rotation continue servos sont raccordés à l’Arduino dans la même configuration que les servos standard, mais le code de les combattre est légèrement différent. Servos standard sont contrôlés en fournissant une position absolue (par exemple "position = 124"), mais les servos de rotation continue interprètent les valeurs de position de vitesse et la direction. Le servo CR a été calibré pour interpréter 95 comme dead stop, avec 0 comme pleine vitesse vers la droite et 180 en pleine vitesse dans le sens anti-horaire. En réalité, toute valeur supérieure à 10 de l’arrêt de mort dans les deux sens est pleine vitesse (c.-à-d. les valeurs inférieure à 80 et plus de 100 en général n’augmenteront pas la vitesse du servo dans les deux sens).
Dans ce sketch, des valeurs aléatoires pour la vitesse et la direction sont générés dans l’ordre de 80 à 105. Ceci est accompli dans la fonction « newParameters » (après la boucle principale).
RANDOMISATION DE MOUVEMENT
En plus de générer une vitesse aléatoire et la direction, le code génère également un intervalle aléatoire à courir à cette
vitesse et direction.
Les intervalles pour ces valeurs générées de façon aléatoire sont :
Vitesse/direction : 80 – 105
Pause : 1000-5000ms
Temps d’exécution :.5 - 2,0 secondes, efficacement
À L’AIDE DE CODE EFFECTUE UNE BOUCLE COMME UNE MINUTERIE
Arduino code ("croquis") sont basés en boucle en permanence les instructions (le "Sub loop()"). En réalité, l’Arduino traversera la boucle presque instantanément, à cet effet, une commande de « retard » 100 "milliseconde" a été ajouté à la fin du code de la boucle. Cela limitera efficacement le code à une boucle d’environ 10 fois par seconde. En incrémentant la valeur de « timer » à chaque passage dans la boucle, moment de l’exécution peut être suivie. Avec une valeur d’incrément de 10 et une limite de 50, le code fera une boucle pendant environ une demi-seconde. Lorsque la valeur de temps max est atteinte, la vitesse est réglée à « dead stop » et démarre une minuterie de pause. Le temps de pause est une autre valeur générée de manière aléatoire.
FINS DE COURSE
Les fins de course sont raccordés au numérique broches 1 & 2. Chaque course est contacté, la valeur de vitesse/direction a immédiatement « dead stop ». Puis une nouvelle série de vitesse/direction, moment de l’exécution et les valeurs de pause est calculé, mais la gamme de vitesse/direction est limité à la circulation en sens inverse .
LEDs
Les LEDs ont été câblés vers le haut selon cette configuration. Câblage des LEDs est simple, que l’astuce est de contrôler leur pouvoir dans l’esquisse basée sur un événement séparé, par une minuterie ou un commutateur.
Les LEDs sont ancrés dans le cadran et sont déclenchées par les valeurs générées pour vitesse/position, pause et exécution.
Ce code ciselée s’allume une LED si la valeur de randpause est > 2000, sinon il reste éteint.
Si (randpause > 2000)
{digitalWrite (DEL3, HIGH);}
else {digitalWrite (DEL3, LOW);}