Leaf Light: En inomhus trädgård Monitor (7 / 9 steg)
Steg 7: Ladda upp hela Leaf Light skissen och kalibrerar sensorer
När du har bestämt kretsen har ställts in korrekt, nu behöver du den fullständiga leaflight.ino skiss (finns längst ner på denna skiss).
Först öppna upp leaflight.ino i Arduino IDE. Ta en titt igenom koden. Du ser extra material med ljussensorn och också med tiden. Det finns några element i sketchen måste du uppdatera själv. Men först måste du förstå lite om hur funktionerna skiss. Här är en kort översikt över hur koden fungerar:
Var tionde minut, samlar Arduino data från två sensorer. Markens fukt data används omedelbart för att ange färgen på NeoPixel. Så, när jorden blir för torr, inom tio minuter Leaf ljuset bör byta till blå eller röd.
Arduino samlar också in data om mängden ljus som den tar emot. Till skillnad från Provningsmetod som reagerar på huruvida det är ljus vid tidpunkten för testning, Arduino kommer beräknar om den har fått tillräckligt med ljus. Det finns en variabel, seconds_light, som håller reda på antalet sekunder av ljus fick varje dag. Vi spåra hur mycket ljus vi får över dagen, och skapa en del tid lyser ur tid förflutit. Efter kl 14 kontrollerar Arduino denna andel. Om mängden ljus i proportion till mängden tid passerat gör inte når våra önskade nivåer, NeoPixel kommer att vända orange eller röd.
Arduinoen har inte en intern klocka. Vad detta innebär för dig är att du måste manuellt skriva in tid och datum i koden precis innan du ladda upp den, så att denna tid i koden återspeglar verkligheten.
Hitta denna del av koden (märkt med ** åtgärder behövs!):
< p > //set upp timers < br > setTime(0,0,00,1,12,15); / ** Åtgärder behövs! Varje gång du uppdaterar din Arduino,
ändra det här avsnittet om du vill ange Arduino till aktuell tid
(timme, minut, sekund, månad, dag, år) så (8,29,40,12,1,15) är lika med 8:29:40 am Jan 12 2015 * / < /p >< p > Alarm.alarmRepeat (0, 00, 0, midnight); kör midnatt funktion vid midnatt för att rensa ut data föregående dag
Alarm.timerRepeat (10, checkSensors); gripskopor data från sensorer varje 10 minuter (checkSensors())
} < /p >
Innan du laddar upp, ändra siffrorna i setTime (tim, min, SEK, dag, månad, år) att återspegla din nuvarande tid och datum.
Nästa redigera du behöver göra på skissen är att kalibrera din fuktgivare och uppdatera de minsta variablerna för att matcha dina avläsningar.
Med hjälp av test kod från föregående steg, göra samma test som innan, men med seriell skärmen körs. Den Serial Monitor rapporterar varje gång sensormätningar tas. Sätta din sensorer olika inställningar (olika krukor av jord med varierande fuktnivåer eller olika typer av belysning). Vad är den lägsta siffran för varje sensor du skulle acceptera att betrakta växten får ljus och att överväga marken fuktig?
Kalibrering kan ta tid. Om du är osäker, Välj nummer som verkar lämpliga och använda dem för en stund. Om de inte verkar vara arbete, uppdatera siffrorna tills du hittar rätt nivåer.
Nu måste du ange dessa minsta acceptabla nivåer i skissen. Hitta detta avsnitt och ändra värdena till de nummer som du har spelat in.
< p > //Set lägsta värden för sensorer ** åtgärder behövs: uppdatera dessa värden för att matcha dina sensorer och växter < br > int lightMin = 30.
int moistMin = 400. < /p >
Slutligen måste du bestämma hur mycket ljus per dag du tror att din anläggning ska få på minimum. Om du är osäker, slå upp din anläggning. Igen, detta kommer att ta en process av försök och misstag, men tycker om kvaliteten på det ljus fick i samband med beloppet. Får det direkt solljus? Får det främst ljus från lampor? Standard är inställd på 12 timmar om dagen. Hitta detta avsnitt och ändra antalet efter hours_light_daily_desired (minimum) antalet timmar du vill ha din anläggning att få ljus per dag.
< p > //Stored ljus variabler. Ställ in variabler för att lagra och samla ljus belopp under hela dagen < br > int hours_light_daily_desired = 12; ** Åtgärder behövs: uppdatera # timmar av ljus du tror dina växter bör få per dag
flyta proportion_to_light = hours_light_daily_desired/24; beräknas andelen önskad ljus per dag
int seconds_light = 0; Denna variabel lagrar antalet sekunder av ljus fick varje dag. Inledningsvis har vi det inställt på 0.
float proportion_lit; Denna variabel används för att beräkna den faktiska andelen av ljus till mörk fick varje dag (för att jämföra med proportion_to_light)
int time_elapsed = 0; används för att mäta mängden tid som har gått i sekunder
int lightLevel = 1; används för att tilldela ackumulerade ljusnivån sant/falskt värde. 1 = tillräckligt med ljus, 0 = inte tillräckligt ljus < /p >
När dessa tre delar har uppdaterats, är du redo att gå. Kontrollera din skiss (kontrollera fel genom att klicka på bockmarkeringen) och sedan ladda upp den till din Arduino!