uid | slug |
---|---|
Meadow.Foundation.Sensors.Light.AnalogLightSensor | /docs/api/Meadow.Foundation/Meadow.Foundation.Sensors.Light.AnalogLightSensor |
AnalogLightSensor | |
---|---|
Status | <img src="https://img.shields.io/badge/Working-brightgreen" style={{ width: "auto", height: "-webkit-fill-available" }} alt="Status badge: working" /> |
Source code | GitHub |
NuGet package |
AnalogLightSensoranalogLightSensor;publicoverrideTaskInitialize(){Resolver.Log.Info("Initializing...");// configure our AnalogLightSensor sensoranalogLightSensor=newAnalogLightSensor(analogPin:Device.Pins.A03);//==== IObservable Pattern with an optional notification filter.varconsumer=AnalogLightSensor.CreateObserver(handler: result =>Resolver.Log.Info($"Observer filter satisfied: {result.New.Lux:N2} lux, old: {result.Old.Value.Lux:N2} lux"),// only notify if the change is greater than 0.5filter: result =>{if(result.Oldis{}old){return(result.New-old).Abs().Lux>0.5;// returns true if > 0.5 change.}returnfalse;}// if you want to always get notified, pass null for the filter://filter: null);analogLightSensor.Subscribe(consumer);// classical .NET events can also be used:analogLightSensor.Updated+=(sender,result)=>Resolver.Log.Info($"Lux changed: {result.New.Lux:N2} lux, old: {result.Old?.Lux:N2} lux");//==== One-off reading use case/patternReadIlluminance().Wait();// Spin up the sampling thread so that events are raised and IObservable notifications are sent.analogLightSensor.StartUpdating(TimeSpan.FromMilliseconds(1000));returnTask.CompletedTask;}protectedasyncTaskReadIlluminance(){varilluminance=awaitanalogLightSensor.Read();Resolver.Log.Info($"Initial lux: {illuminance.Lux:N2} lux");}