Stap 11: Temperatuur te bewaken
Wat we tot nu toe hebben opgebouwd kan worden gebruikt voor het volgen van de toegang tot anyplace dat is meestal donker; u kunt een herinnering voor uw kast, lade, werkset, lunchbox, enz. Aangezien wij aan een koelkast-monitor bouwen en de Boon een ingebouwde temperatuursensor heeft kunnen we onze tattletale om ook toezien op de interne temperatuur van de koelkast upgraden. We moeten een paar constanten voor temperatuurbewaking toevoegen:
const int8_t TEMP_WARNING_LOW_CELSIUS = 1; const int8_t TEMP_WARNING_HIGH_CELSIUS = 5; const uint32_t TEMP_WARNING_INTERVAL_SEC = 5;
En we moeten ook een paar globale variabelen voor het bijhouden van gebeurtenissen van de temperatuur:
boolean bTempProblem = false; uint32_t nLastTempWarning = 0;
Maak nu twee functies voor het uitvoeren van de controles van de temperatuur. De temperatureOkay() functie controleert of de huidige temperatuur binnen het acceptabele bereik. De functie checkTemperature() wordt de functie temperatureOkay() gebruikt en geeft waarschuwingstonen zo nodig.
boolean temperatureOkay() { boolean bTempOkay = true; // Default return value to true // Get the current temperature in degrees Celsius int8_t nTemp = Bean.getTemperature(); // If the current temperature is not in the acceptable range ... if ( (nTemp < TEMP_WARNING_LOW_CELSIUS) || (nTemp > TEMP_WARNING_HIGH_CELSIUS) ) { // ... set return value to false. bTempOkay = false; } return bTempOkay; }
void checkTemperature() { // If the temperature is out-of-range ... if (!temperatureOkay()) { bTempProblem = true; // ... and if our last warning was more than our interval ago ... if ( (approxRunTime() - nLastTempWarning) > (TEMP_WARNING_INTERVAL_SEC * 1000) ) { // ... reset our last warning time ... nLastTempWarning = approxRunTime(); // ... and give warning tones. warningTone( TEMP_WARNING_TONE, TEMP_WARNING_DURATION_MS, TEMP_WARNING_REPEAT); } } else { bTempProblem = false; } }
Nu kunnen we de temperatuur controle toevoegen aan loop , nadat het licht is gecontroleerd en voordat we ons voorbereiden om te slapen.
// Temperature check checkTemperature();
We moeten ook onze slaaptijd wanneer we ons in een temperatuur waarschuwing voorwaarde dus waarschuwingen zal dicht bij de gewenste interval aanpassen.
if (bTempProblem) { nSleepTime = min(nSleepTime,(TEMP_WARNING_INTERVAL_SEC * 1000)); }
Onze schets moet nu volledig. U wellicht aanpassen van de verschillende drempels van waarschuwing aanpassen aan uw specifieke koelkast, bonen, enz.