Étape 15 : Note sur le croquis
Trois aspects de l’esquisse sont à noter :
Bibliothèque de DirectIO
Non seulement la bibliothèque DirectIO rend la lecture et l’écriture aux broches de l’Arduino beaucoup plus rapide, qu'il permet également de traiter les broches comme variables.
Au lieu d’écrire
utilisation peut il suffit d’écrire
PinChangeInt bibliothèque
PinChangeInt vous donne accès aux interruptions de goupille sur toutes les broches de l’Arduino. Cette bibliothèque a été essentielle pour le codage de routine sans l’utilisation de la fonction pulseIn mesure ultrasonique.
Il n’y a rien de mal avec soipulseIn, hormis le fait qu’il ne bloque pas la fonction, c'est-à-dire, jusqu'à ce que le bord de l’impulsion est détecté (ou jusqu'à ce qu’un timeout) rien d’autre se passe. Comme esquisse citrouille est écrit avec multitaskling coopérative à l’esprit, c’est inacceptable.
Au lieu d’utiliser pulseIn, la démarche ultrasonique est subdivisée en grands 3 étapes :
- Déclencher l’impulsion ultrasonore
- Piège à echo pin interruption sur le bord de sensibilisation (démarrage comptage microsecondes)
- Piège à echo pin interruption sur le bord de chute (arrêt comptage microsecondes)
Alors que l’écho se déplace, microcontrôleur peut exécuter d’autres tâches.
Pour plus de détails, reportez-vous à croquis.
Bibliothèque de TaskScheduler
TaskScheduler implémente multitâche coopératif pour les microcontrôleurs Arduino.
Une fois que vous utilisez TaskScheduler, programmation Arduino transforme en définissant un certain nombre de « tâches » que votre appareil a besoin de faire, et les interactions entre eux.
Par exemple, la citrouille a besoin de faire ce qui suit :
- Détecter le mouvement
- Mesurer la Distance
- Yeux « Clin d’oeil » lorsqu’un mouvement est détecté
- « Lueur » 3 couleur LED quand certaine distance est détecté
- «: Scream "quand quelqu'un est vraiment proche
En outre, 3 tâches spécifiques « matériel » sont nécessaires
- Tâche de contrôler les yeux (clin d’oeil et blink)
- Devoir de contrôle moteurs (vibrer pendant un certain temps)
- Tâche de contrôle LED (lueur)
Chacune des fonctions ci-dessus est créé en tant que tâche. Par exemple :
tMotion de la tâche s’exécute une fois, et les appels de méthode MotionDetectedCallback, qui est responsable de décider ce qui doit arriver une fois que le mouvement est détecté basée sur la distance.
tâche tTimeout remet citrouille pour dormir si aucune activité n’a eu lieu pendant une minute.
TDistance de la tâche s’exécute toutes les 100 millisecondes et déclenche la mesure de la distance par ultrasons.
Aucune coordination spéciale n’est requise entre les tâches indépendantes comme planificateur prend soin de lui.
Les dépendances explicites entre les tâches sont consignées dans le code de méthodes de rappel, par exemple :
une fois que le mouvement est détecté, la tâche de détection de mouvement :
- Réinitialise la tâche de timeout
- Permet (s’il n’était ne pas activé déjà) de mesure de distance
- Vérifie si les citrouille est déjà un clin de œil, incandescent ou crier
- Sinon, lance « un clin de œil » tâche
Pour plus de détails sur TaskScheduler, veuillez vous reporter à la page de documentation sur arduino.cc
Pour plus de détails veuillez vous référer également à la page de dessin.