Python/Arduino seriella styrenheten: Hemlagad masugn (5 / 8 steg)
Steg 5: Gränssnitt och datainsamling
Gränssnittet är ett lager av python kod som fungerar över seriell kontrollprotokollet. Den seriella kontroll tillåts av den första lagret Serial protocol programmet och firmware är mycket mer flexibla än en skulle kräva för detta projekt: Jag började skriva python kod för att tillåta ett program att köra på PC, använda datorresurser av en CPU, interagera med omvärlden. Med koden som anges i steg 1, kan PC styra alla digitala stiften, PWM via kommandot analogWrite() och ta analoga data bort av A0 (eller några analoga stift med modifiering av firmware). Dessutom kan firmware uppdateras för att köra något segment av Arduino C kod genom enkel att lägga till ett ytterligare fall/bryta block med huvudströmbrytare block. Följaktligen är det möjligt att ändra I/O struktur i farten (via tillägg av ett fall/bryta block innehåller en pinMode() redogörelse), eller lägga till valfritt antal användbara funktioner. Jag valde att hålla firmware relativt enkelt för detta projekt, bara stödja de grundläggande kommandona, eftersom jag visste att jag inte skulle behöva få tillgång till någon högre funktioner under ugnen körs.
Dessutom göra den högre nivåer kodning mer lättläst, La jag en uppsättning funktioner som inkapslade alla I/O funktioner specifikt för detta projekt, som fanOn() och fanOff() för fläkt kontroller, för att låta GUI koden att köra utan att direkt behöva kalla de seriella program. Detta tillåtet oberoende tester av inkapsling koder (dvs. jag kunde testa fanOff(), och när det fungerade, jag slapp oroa samordning frågor när jag ringde det från GUI programvaran).
Insamling av termoelement data skiljer sig inte från kontrollmekanismer: det använder en inkapsling funktion att samla in analogRead() uppgifter och spara data (för senare analys och on-the-fly grafisk display). Termoelement data capture funktionen även sammanfattar data samling funktioner, så att data registreras och köra posten uppdateras varje gång en Mätningstidpunkten.
GUI funktionaliteten aktiveras av Zelle grafik paketet, en enkel att använda, låg grafik kraftpaket för python. Jag valde Zelle paketet över mer sofistikerade python grafikalternativ för det är enkel och relativt låga systemkraven resurser. GUI är setup som en master while() loop, där fönstret avsöks regelbundet med checkMouse(), så att programmet ska utföra självständiga åtgärder (som att läsa termoelementet varje så ofta) medan du väntar på indata från användaren. I fönstret visas också den hela körningen som-tidskurvan termoelement data som uppdateras varje gång en ny behandling tas.
I slutet av en körning sparas posten för körningen i en textfil genom en enkel python file.write förfarande. Under hela körningen, varje gång en mätning görs, statistik för en viss tidpunkt: den tidpunkt vid vilken inspelningen görs, termoelement Läs, fan staten, syre tillförsel tillståndet och antal bränsle tillägg, läggs till en lista. När data spara funktion anropas, är denna lista skriven till en textfil så att körningen kan analyseras vidare senare.