hal/arduino/HalMultiSensor/HalMultiSensor.ino

71 lines
1.7 KiB
Arduino
Raw Normal View History

/*
A interrupt based sensor device that reads multiple sensors and transmits
the data to a central location.
*/
InterruptUtil timerInterrupt;
unsigned int timerMultiplierMAX;
unsigned int timerMultiplier = 0;
// Sensors
HardwarePowerConsumption powerSensor;
HardwareTemperature temperatureSensor;
HardwareLight lightSensor;
// Protocols
HardwarePowerConsumption powerProtocol;
HardwareTemperature temperatureProtocol;
HardwareLight lightProtocol;
void timerInterrupt()
2016-02-11 16:31:03 +01:00
{
++timerMultiplier;
if (timerMultiplier > timerMultiplierMAX)
timerMultiplier = 1;
// Send power consumption
#ifndef POWERCON_ENABLED
unsigned int consumption = powerSensor.getConsumption();
powerSensor.reset();
powerProtocol.setConsumption(consumption);
powerProtocol.send();
#endif
// Handle temperature sensor
#ifndef TEMPERATURE_ENABLED
if(timerMultiplier == TEMPERATURE_TIMER_MULTIPLIER)
{
unsigned int temperature = temperatureSensor.getTemperature();
unsigned int humidity = temperatureSensor.getHumidity();
temperatureProtocol.setTemperature(temperature);
temperatureProtocol.setHumidity(humidity);
temperatureProtocol.send();
}
#endif
// Handle light sensor
#ifndef TEMPERATURE_ENABLED
if(timerMultiplier == LIGHT_TIMER_MULTIPLIER)
{
unsigned int lumen = lightSensor.getLuminosity();
lightProtocol.setLuminosity(lumen);
lightProtocol.send();
}
#endif
}
void setup()
{
timerMultipleMAX = LIGHT_TIMER_MULTIPLIER * TEMPERATURE_TIMER_MULTIPLIER; // Find a lowest common denominator
pinInterrupt = InterruptUtil(timerInterrupt);
pinInterrupt.setupTimerInterrupt(60*1000); // one minute scheduled interrupt
}
void loop() {}