Étape 5: Collecte de données et interfaces
L’interface est une couche de code python qui agit au-dessus du protocole de contrôle en série. Le contrôle série autorisé par le premier logiciel de protocole série de couche et le firmware est beaucoup plus flexible qu’on aurait besoin pour ce projet : J’ai commencé à écrire le python code pour permettre un programme s’exécute sur le PC, en utilisant les ressources informatiques d’un CPU, d’interagir avec le monde extérieur. Avec le code tel qu’il figure à l’étape 1, le PC peut contrôler toutes les quilles numériques, PWM, par le biais de la commande analogWrite() et prendre les données analogiques hors A0 (ou des broches analogiques avec modification du firmware). En outre, le firmware peut être mis à jour pour exécuter n’importe quel segment de code Arduino C simple en ajoutant un bloc de cas/pause supplémentaire au bloc interrupteur général. Par conséquent, il est possible de changer la structure de I/O à la volée (via l’ajout d’un bloc de cas/pause contenant une déclaration de pinMode()), ou ajouter un certain nombre de fonctionnalités utiles. J’ai choisi de garder le firmware relativement simple pour ce projet, soutenant seulement les commandes de base, parce que je savais que je n'aurais pas besoin d’accéder à des fonctions supérieures au cours de la fournaise s’exécute.
En outre, pour rendre la couche supérieure de codage plus lisible, j’ai ajouté un ensemble de fonctions qui encapsulé toutes les fonctions d’e/s spécifiques à ce projet, tels que fanOn() et fanOff() pour le fan de contrôle, permettent au code de GUI exécuter sans avoir directement appeler les programmes de contrôle en série. Cela a permis des tests indépendants des codes d’encapsulation (c.-à-d., j’ai pu tester fanOff(), et une fois que cela a fonctionné, je n’ai pas à vous soucier des problèmes de coordination quand je l’ai appelé depuis le logiciel GUI).
La collecte des données thermocouple n’est pas différente des mécanismes de contrôle : il utilise une fonction d’encapsulation pour recueillir des données analogRead() et sauvegarder les données (pour l’affichage graphique analyse et on-the-fly plus tard). La fonction de capture de données de thermocouple encapsule également les fonctions de collecte de données, afin que les données sont enregistrées et l’enregistrement de l’exécution est mis à jour chaque fois qu’une mesure est prise.
Le GUI est activée par le logiciel graphique de Zelle, un paquet de graphique facile à utiliser, faible consommation pour python. J’ai choisi le paquet Zelle sur python plus sophistiqué des options graphiques pour sa facilité d’utilisation et les besoins en ressources système relativement faible. Le GUI est configuré comme une boucle while() maître, dont la fenêtre est périodiquement interrogée avec checkMouse(), permettant au programme effectuer des actions autonomes (par exemple, lire de temps en temps le thermocouple) en attendant l’entrée d’utilisateur. La fenêtre affiche également le graphique dans le temps de l’ensemble du tirage de données de thermocouple, qui sont mis à jour chaque fois qu’une nouvelle lecture est prise.
À la fin d’une course, le record de la course est enregistré dans un fichier texte par une procédure de file.write simple python. Tout au long de la course, chaque fois qu’une mesure est prise, les statistiques pour ce moment particulier : le temps au cours de laquelle l’enregistrement est effectué, le thermocouple lire, fan État, état d’alimentation en oxygène et nombre d’ajouts de carburant, sont ajoutés à une liste. Lorsque les données en fonction d’économie sont appelées, cette liste est écrite dans un fichier texte pour que la course peut être davantage analysée plus tard.