Elektroniska TattleTale / kylskåp Monitor (11 / 13 steg)
Steg 11: Övervakning temperatur
Vad vi har byggt så långt kunde användas till att övervaka tillgång till var som helst som är oftast mörkt; Du kan skapa ett larm för din garderob, låda, verktygslådan, lunchbox, etc. Eftersom vi bygger ett kylskåp monitor och bönan har en inbyggd temperatursensor kan vi uppgradera vårt tattletale också övervaka den inre kylskåpstemperatur. Vi behöver lägga till några konstanter för temperaturövervakning av:
CONST int8_t TEMP_WARNING_LOW_CELSIUS = 1;
CONST int8_t TEMP_WARNING_HIGH_CELSIUS = 5;
CONST uint32_t TEMP_WARNING_INTERVAL_SEC = 5;
Och vi behöver också ett par globala variabler för att spåra temperatur händelser:
booleska bTempProblem = false;
uint32_t nLastTempWarning = 0;
Nu skapa två funktioner för att utföra kontrollerna som temperatur. Funktionen temperatureOkay() kontrollerar om aktuell temperatur ligger inom acceptabla intervallet. Funktionen checkTemperature() används funktionen temperatureOkay() och ger varningssignaler som är lämpligt.
Boolean temperatureOkay()
{
booleska bTempOkay = sant; Standard returvärdet True
Få aktuell temperatur i grader Celsius
int8_t nTemp = Bean.getTemperature();
Om aktuell temperatur inte är i intervallet acceptabelt...
om ((nTemp < TEMP_WARNING_LOW_CELSIUS) || (nTemp > TEMP_WARNING_HIGH_CELSIUS))
{
... returvärdet inställd på false.
bTempOkay = false;
}
återvända bTempOkay;
}
void checkTemperature()
{
Om temperaturen är out-of-range...
om (! temperatureOkay())
{
bTempProblem = sant;
... och om våra sista varningen var mer än våra intervall sedan...
om ((approxRunTime() - nLastTempWarning) > (TEMP_WARNING_INTERVAL_SEC * 1000))
{
... våra sista varning tid återställs...
nLastTempWarning = approxRunTime();
... och ge varningssignaler.
warningTone (TEMP_WARNING_TONE, TEMP_WARNING_DURATION_MS, TEMP_WARNING_REPEAT);
}
}
annat
{
bTempProblem = false;
}
}
Nu kan vi lägga den temperatur kontrollen till loop() efter ljuset kontrollerar och innan vi förbereder oss att sova.
Temperaturen du
checkTemperature();
Vi bör också anpassa vår sömntid när vi är i en temperatur varningstillstånd så varningar kommer att vara nära önskat intervall.
om (bTempProblem)
{
nSleepTime = min (nSleepTime,(TEMP_WARNING_INTERVAL_SEC * 1000));
}
Nu ska vår skiss komplett. Du kan behöva justera de olika varning tröskelvärdena för att passa din särskild kylskåp, bönor, etc.