Étape 3: Code
Ce projet utilise des « Tabs » pour aider à organiser le code dans l’IDE Arduino. C’est vraiment la pratique seulement inhabituelle de codage dans l’ensemble du projet. Les onglets ne sont pas beaucoup utilisé, ou peut-être que je viens d’apprendre à leur sujet. Mais ils me rappellent des techniques et des mécanismes utilisés dans les environnements de programmation plus sophistiqués.
Je les utilise plus sous forme de signets dans ce projet. Leur fonction principale ici est de briser le code en morceaux afin que je peux naviguer facilement sans défilement tellement. Cela a un avantage supplémentaire important. Je suis un programmeur très paresseux, et si je ne pense pas que quelqu'un verra mon code, puis j’ai évitera à défilement et va gifler extraits de code dans des endroits aléatoires, jusqu'à ce que l’ensemble du programme devient un désordre illisible. Il exécute très bien, mais si je reviens un mois plus tard je ne peux pas encore lire mon propre code, beaucoup moins le modifier. À l’aide d’onglets, mon code reste généralement plus lisible parce que je peux obtenir rapidement l’onglet qui contient des extraits de code connexes. Donc l’ensemble du programme reste mieux organisé. Onglets presque me forcer à penser plus modulaire.
Cela aide aussi quand j’ai besoin de modifier le programme pour une utilisation avec d’autres composants. Dans ce projet, tout le code pour la conduite de l’écran est dans un couple des onglets. Il était facile quand j’ai porté sous à un affichage SPI. Je savais où tout le code correspondant a été, et il était facile pour moi du remplacer par le nouveau code dans le programme sans elle traque dans un enchevêtrement de spaghetti unique du code.
Onglets peuvent être créés à l’aide de la petite flèche en haut à droite de l’interface IDE. Notez que l’ordre de chargement des onglets est important, tout comme un programme de fichier unique en.
Comment utiliser
Téléchargez tous les fichiers d’exemples et placez-les dans un répertoire à l’intérieur vous dossier Arduino. Appelez le nouveau dossier/répertoire « Loop_Trainer » afin qu’il corresponde au nom de votre fichier principal .ino. Chargez le fichier Loop_Trainer, puis compiler et télécharger à votre matériel.
Le code est bien commenté (certains diraient plus commenté), alors j’espère que même les débutants pourront comprendre comment il fonctionne.
Résumé
Fondamentalement, le code lit les valeurs des potentiomètres, mappe les valeurs, si nécessaire, puis passe la valeur à une fonction d’animation. Les valeurs sont également affichées à l’écran. Simple, droite ? Eh bien c’est le cas, ne laissez pas le format tabulé compliquer les choses.
Contenu de l’onglet
- Loop_Trainer : Ce fichier principal. Il a toute l’initialisation habituelle, l’installation et la boucle principale. Le code définit les codes pin et variable de noms, charge la bibliothèque de NeoPixel et commence la communication sérielle. La boucle principale est très simple, il appelle juste une fonction pour lire les valeurs sur les potentiomètres et exécuter le menu.
- LCD_baseCommands : L’écran LCD est utilisé dans ce projet utilise démarrer et arrête des codes pour passer commandes. Il est simple à comprendre, mais reprenant les codes devient fastidieux et bloats le fichier. J’ai donc créé une série de fonctions les codes peuvent être appelée simplement. Vérifiez guide pour une liste complète des commandes de Adafruit.
- LCD_setup : Maintenant que toutes les commandes de base ont été transformées en fonctions, nous pouvons les utiliser pour configurer l’écran pour une utilisation. Vous devrez modifier ce onglets et LCD_baseCommand si vous utilisez un affichage différent.
- Menu_functions : Il s’agit d’une simple instruction case. Selon ce qui est la valeur mappée du pot menu, nous appeler une fonction (dans l’onglet NeoPixel_Functions) pour animer le NeoPixels. J’ai laissé quelques slots vides pour que vous remplissez avec vos propres animations.
- NeoPixel_Functions : Il s’agit de l’amusement partie. Ce fichier contient le code d’animation réelle. Ces animations sont des fonctions appelées dans l’onglet Menu_functions. Les animations d’acquérir le RVB et les valeurs des variables de l’ensemble des données de l’onglet Read_pots. Les animations également envoyer des données à l’écran d’affichage en utilisant les fonctions dans l’onglet LCD_baseCommands. Lorsque vous créez vos propres animations nouvelles, juste appeler à partir de l’onglet Menu_functions. Ce sont des animations de base, mais j’ai laissé un deux-parter et quelques autres routines excentrique pour vous de jouer avec.
- Read_Pots : Ces fonctions lire les potentiomètres et cartographier leurs valeurs pour s’adapter à leur usage standard. Par exemple, le menu doit seulement 10-20 étapes, nous correspondent à cette valeur. La valeur RVB doit être 0-255. Mais l’entrée « variable » est utilisée de bien des façons différentes que nous envoyer la valeur brute et la mapper à la nécessité actuelle à l’intérieur de la fonction appelante. Vous pouvez toujours faire un analogRead direct si vous voulez une valeur de sondage différemment.
Remarque importante : quelque part. en quelque sorte, je sera ont laissé « souches » des expériences abandonnées et d’autres erreurs dans cet exemple de code. Le code s’exécute, mais si vous trouvez des impasses, ils sont probablement survolant de portages vers différents affichages ou de « banques » d’animations ne pas destinés à être fourni dans l’exemple de code.