A simple Insense program requesting sensor readings from the solar sensor and uses the LEDs to indicate and increase/decrease in ambient light. This is achieved through two components – one interacting with the temperature sensor and one controlling the LEDs.
// Interface for Light Sensor Reader
type ISensorReader is interface (
out bool solarRequestChan ;
in integer solarValueChan ;
out integer ledsChan
)
// Light Sensor Reader component
component SensorReader presents ISensorReader {
constructor() { }
behaviour {
// get solar sensor reading
send true on solarRequestChan
receive solarValue from solarValueChan
send solarValue on ledsChan
}
}
// Interface for LED output component
type ILedOutput is interface (
in integer input ;
out bool redLed ;
out bool greenLed
)
// LED output component
component LedOutput presents ILedOutput {
brighter = false
darker = false
avgSolar = 0
constructor() { }
behaviour {
// get solar radiation reading
receive solar from input
// represent reading via LEDs, green - brighter, red darker
brighter := (solar - avgSolar) > 20
darker := (avgSolar - solar) > 20
send brighter on greenLed
send darker on redLed
// adjust averages
if solar > avgSolar then { avgSolar := avgSolar + 1 }
else { avgSolar := avgSolar - 1 }
}
}
lo = new LedOutput()
sr = new SensorReader()
connect sr.solarRequestChan to lightHumidTempSensor.solarRequest
connect sr.solarValueChan to lightHumidTempSensor.solarOutput
connect sr.ledsChan to lo.input
connect lo.redLed to leds.redState
connect lo.greenLed to leds.greenState