Stap 5: Interfacing en gegevensverzameling
De interface is een laag van python code die boven het seriële control protocol fungeert. De seriële controle toegestaan door de eerste laag serieel protocolsoftware en de firmware is veel flexibeler dan een voor dit project zou vereisen: ik begon met het schrijven van de python-code zodat een programma wilt uitvoeren op de PC, met de IT-middelen van een CPU, om te communiceren met de buitenwereld. Met de code zoals vermeld in stap 1, kan de PC controle van alle de digitale pennen, PWM via de opdracht van de analogWrite(), en nemen analoge gegevens af A0 (of een analoge pinnen met wijziging van de firmware). Bovendien kan de firmware worden bijgewerkt, zodat elk segment van Arduino C code uitgevoerd door eenvoudige toe te voegen een extra geval/break-blok aan het blok van de hoofdschakelaar. Daarom, is het mogelijk om te wijzigen de structuur van de I/O op de vlieg (via de toevoeging van een blok van de zaak/break met een verklaring van de pinMode()), of een aantal handige functies toevoegen. Ik koos om te houden van de firmware voor dit project relatief eenvoudig, alleen ter ondersteuning van de basis commando's, omdat ik wist dat ik zou niet nodig dat voor toegang tot een hogere functies tijdens oven loopt.
Anderzijds de hogere laag-codering om leesbaarder te maken, ik heb toegevoegd een aantal functies waarmee ingekapseld alle I/O functies specifiek voor dit project, zoals fanOn() en fanOff() voor de fan besturingselementen, aan de GUI code kan worden uitgevoerd zonder direct te roepen de seriële controle programma's toestaan. Hierdoor onafhankelijke tests van de inkapseling codes (dat wil zeggen kon ik het testen van fanOff(), en zodra het werkte, ik hoefde niet te zorgen over coördinatie problemen wanneer ik het van de GUI-software noemde).
Het verzamelen van de gegevens van de thermokoppel verschilt niet van de controlemechanismen: het gebruikt een inkapseling-functie analogRead() gegevens verzamelen en opslaan van de gegevens (voor latere analyse en on-the-fly grafische weergave). De opnamefunctie van de thermokoppel-gegevens ook kapselt de data collectie functies, zodat gegevens worden opgenomen en de run record wordt bijgewerkt telkens wanneer die een meting is genomen.
De GUI-functie is ingeschakeld door de Zelle grafisch pakket, een makkelijk te gebruiken, lage macht grafisch pakket voor de python. Ik koos de Zelle pakket over meer geavanceerde python grafische opties voor het gemak van gebruik en relatief lage systeemvereisten van de middelen. De GUI is ingesteld als een lus van de master while(), waar is het venster periodiek ondervraagden met checkMouse(), waardoor het programma autonome acties (zoals het lezen van de thermokoppel elke zo vaak) uit te voeren tijdens het wachten voor de invoer van de gebruiker. Het venster geeft ook de volledige looppas als-tijdgrafiek van thermokoppel gegevens, die telkens bijgewerkt wordt wanneer een nieuwe lezing wordt genomen.
Aan het einde van een run, wordt de record voor de run opgeslagen in een tekstbestand met een eenvoudige python file.write procedure. Gedurende de termijn, telkens als een meting wordt genomen, de statistische gegevens voor die bepaalde tijd: de tijd waarop de opname is gemaakt, de thermokoppel lezen, ventilator staat zuurstof levering staat en aantal brandstof toevoegingen, worden toegevoegd aan een lijst. Wanneer de gegevens opslaan functie wordt aangeroepen, staat deze lijst naar een tekstbestand zodat het punt kan verder naderhand worden geanalyseerd.