Kyckling Coop Controller v2 programuppdatering (4 / 5 steg)
Steg 4: Meny Driven - kod
Som tidigare nämnts jag använde ett LCD-menyn system bibliotek produceras av Dr Lui - detta bibliotek kallas PHI_Prompt. Anledningen till detta val är att jag ville ha möjligheten att använda en enkel rotary switch att välja vissa variabler inom programmet och ändra dem till ett lagstadgade. Till exempel för varje månad kan jag nu manuellt ställa upp och ner dörren tider med hjälp av menysystemet.
Jag kommer inte att gå in för mycket djup när det gäller att förklara koden bara nya funktioner - allt annat är lik den föregående koden i den första versionen.
När du öppnar Chicken_Coop_Controller_v2 presenteras med fem flikar:
- Chicken_Coop_Controller_v2
- Coop_Control
- Coop_Menu
- RTC
- TempProbe
Chicken_Coop_Controller_v2
De viktigaste etiketter definitioner som används i koden är här inklusive teckenrepresentation krävs av menysystemet. Om du skulle besluta att välja att använda en rotary switch kan du istället använda tidigare LCD tangentbordet (analoga Återställ nätverk). Om du läser PHI handboken förklarar hur du kan ändra indata och utdata utan för mycket ändring av koden - mycket cleaver.
Här definieras också globala variabler och bibliotek. Programmet är förberetts och sedan funktionen top_menu() anropas för att starta systemet som automatiskt går in i "kör läge".
Coop_Control
Detta är var huvuddelen av kontroll logik sitter när "RunController" menyn alternativ väljs. Standardvärden för dörren upp och ner gånger ställs. Denna version fungerar nu i timmar och minuter - så är timme, minut i stället för minuter totalt som jag vet förvirra folk. I detta avsnitt har jag också lagt till logiken (SetFlashOn) som orsakar en LED att komma på när dörren stängs korrekt och blinkar när det finns ett problem när UB- och IB
Coop_Menu
Här är där struktur och konfiguration för Coop_menu sitter:
- Köra Controller
- Ställa in tid/datum
- Ställ in dörren tid
- Dörren upp
- Dörr ner
- Dörr parametrar
- Om
För varje menyval finns en lokal samtal funktion som anropar sedan på Coop_Control funktioner. Detta avsnitt är relativt enkelt - Jo jag hoppas!
Jag har lagt till en felsäker funktion till dörren ner och upp alternativ som håller reda på hur länge dessa funktioner har varit igång. Om de går utöver parametern set (MotorFailSafe) är då motorn avstängd.
RTC
Här koden har ändrats betydligt så att den fungerar med DS1307 biblioteket. Jag har också lagt till brittiska sommartid (BST) konvertering logik. Jag har skapat 7 års när klockorna går framåt och bakåt överst i denna kod. När koden går att skriva ut tiden kontrollerar den om det behöver lägga till en timme på Standard Greenwich Mean Time (GMT). Detta kod också utskrifter dörr nära och öppet tider och ställer den aktuella tiden för använda någon annanstans i koden.
Detta nummer kan du också ange Coop tid och datum med hjälp av menyn input kod. Du är styrka för att ställa in tiden först genom roterande och klicka på timme och minut sedan.
TempProbe
Denna kod är mycket lik den föregående koden i original styrenhet. Läser en OneWired temperatur sond och omvandlar till en Celsius läsning, då visas och sedan jämfört med tidigare behandlingarna att se om det är ett minimum eller maximum läsande. Om så den är lagrad. Minimi- och läsarna visas också sedan
Jag har uppdaterat programvaran för att köra med den nya Arduino 1.6.6 miljön. Jag får en varning när den sammanställer men allt verkar vara ok. Om du har släpp några problem mig en linje.