/// <summary> /// Creates an instance of <see cref="WindowsDevice" />. /// </summary> public WindowsDevice() { _display = new Display(); _battery = new Battery(); Query(); try { var result = Windows.Devices.Sensors.Accelerometer.GetDefault(); if (result != null) { _accelerometer = new Accelerometer(); } } catch (Exception) { } try { var result = Windows.Devices.Sensors.Gyrometer.GetDefault(); if (result != null) { _gyroscope = new Gyroscope(); } } catch (Exception) { } }
public ShellPageViewModel(IAccelerometer accelerometer, IWarning warning) { _warning = warning; _accelerometer = accelerometer; _accelerometer.OnChange += OnSensorChange; _accelerometer.Start(); }
public MainViewModel(IAccelerometer accelerometer = null, IGyroscope gyroscope = null, IMagnetometer magnetometer = null, ICompass compass = null, IAmbientLight ambientLight = null, IBarometer barometer = null, IPedometer pedometer = null, IProximity proximity = null, IHeartRateMonitor heartRate = null, IHumidity humidity = null, ITemperature temperature = null) { this.Sensors = new List <ISensorViewModel>(); this.AddIf(accelerometer, "G"); this.AddIf(gyroscope, "G"); this.AddIf(magnetometer, "M"); this.AddIf(compass, "D"); this.AddIf(ambientLight, "Light"); this.AddIf(barometer, "Pressure"); this.AddIf(pedometer, "Steps"); this.AddIf(proximity, "Near"); this.AddIf(heartRate, "Heart Rate (bpm)"); this.AddIf(humidity, "Humidity"); this.AddIf(temperature, "Temp"); }
protected async override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); var samples = 0; var model = (DataContext as MainViewModel).MyModel; metawear = MbientLab.MetaWear.Win10.Application.GetMetaWearBoard(e.Parameter as BluetoothLEDevice); accelerometer = metawear.GetModule <IAccelerometer>(); accelerometer.Configure(odr: 100f, range: 8f); await accelerometer.PackedAcceleration.AddRouteAsync(source => source.Stream(async data => { var value = data.Value <Acceleration>(); await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { (model.Series[0] as LineSeries).Points.Add(new DataPoint(samples, value.X)); (model.Series[1] as LineSeries).Points.Add(new DataPoint(samples, value.Y)); (model.Series[2] as LineSeries).Points.Add(new DataPoint(samples, value.Z)); samples++; model.InvalidatePlot(true); if (samples > MainViewModel.MAX_DATA_SAMPLES) { model.Axes[1].Reset(); model.Axes[1].Maximum = samples; model.Axes[1].Minimum = (samples - MainViewModel.MAX_DATA_SAMPLES); model.Axes[1].Zoom(model.Axes[1].Minimum, model.Axes[1].Maximum); } }); })); }
public override async Task Start() { switch (SelectedAccelerometer) { case "MPU-9250": Sensor = (await Mpu6050.ProbeAsync(Board.I2c, true))[0]; break; case "ADXL-345": Sensor = (await Adxl345.ProbeAsync(Board.I2c))[0]; break; case "LIS3DH": Sensor = (await Lis3dh.ProbeAsync(Board.I2c))[0]; break; case "BNO055": Sensor = (await Bno055.ProbeAsync(Board.I2c))[0]; break; case "LSM303DLHC": var lsm303dlhc = new Lsm303dlhc(Board.I2c); Sensor = lsm303dlhc.Accel; break; } Sensor.AutoUpdateWhenPropertyRead = false; OnPropertyChanged(nameof(Sensor)); }
// credit to Xamarin Essentials for this calculation public static IObservable <Unit> WhenShakeDetected(this IAccelerometer accelerometer, TimeSpan?bufferWindow = null, double gravity = 9.81, double accelerationThreshold = 169, int minReadings = 4, double avgNeededForShake = 0.75) => accelerometer .WhenReadingTaken() .Buffer(bufferWindow ?? TimeSpan.FromMilliseconds(500)) .Select(readings => { if (readings.Count < minReadings) { return(false); } var countInAccel = readings.Count(acc => { var x = acc.X * gravity; var y = acc.Y * gravity; var z = acc.Z * gravity; var g = (x * x) + (y * y) + (z * z); return(g > accelerationThreshold); // is accelerating }); var avg = countInAccel / readings.Count; return(avg >= avgNeededForShake); }) .Where(x => x) .Select(_ => Unit.Default);
public SearchResultsPageViewModel(ApplicationSettings settings, INavigationService navigationService, IImageSearchService imageSearchService, IHub hub, IAccelerometer accelerometer, IStatusService statusService, IShareDataRequestedPump shareMessagePump) { _settings = settings; _navigationService = navigationService; _imageSearchService = imageSearchService; _hub = hub; _accelerometer = accelerometer; _statusService = statusService; HomeCommand = _navigationService.GoBackCommand; ViewDetailsCommand = new DelegateCommand(ViewDetails, () => SelectedImage != null); LoadMoreCommand = new AsyncDelegateCommand(LoadMore); ThumbnailViewCommand = new DelegateCommand(ThumbnailView); ListViewCommand = new DelegateCommand(ListView); SplitViewCommand = new DelegateCommand(SplitView); SettingsCommand = new DelegateCommand(Settings); AddImages(_settings.SelectedInstance.Images); shareMessagePump.DataToShare = _settings.SelectedInstance.QueryLink; _statusService.Title = _settings.SelectedInstance.Query; _accelerometer.Shaken += accelerometer_Shaken; _navigationService.Navigating += NavigatingFrom; UpdateCurrentView(CurrentView); _hub.Send(new UpdateTileImageCollectionMessage(_settings.SelectedInstance)); }
public PreferenceViewModel( ILogger logger, IAccelerometer accelerometer) : base(logger) { _accelerometer = accelerometer; }
/// <summary> /// Standard constructor of the Core class /// </summary> public Core() { m_pServoController = new PCA9685(); m_pAccelerometer = new LSM303DLHC(); m_pGyroscope = new L3GD20H(); m_pTelemetryClient = new Client(); m_pRemoteControl = new NetworkRemoteControl(); }
private void BoardOnConnected(object sender, EventArgs e) { Debug.unityLogger.Log(TAG, "BoardOnConnected"); IAccelerometer accelerometer = manager.GetAccelerometer(sender as IBoard); accelerometer.Start(this); }
public void Adapt(IAccelerometer accelerometer, FlightData flightData) { var gs = flightData.gs; if (gs == 0) //ignore exactly zero g's { gs = 1; } accelerometer.InstrumentState.AccelerationInGs = gs; }
public Game(INavigationService <ILevel> navigationService, IAccelerometer accelerometer, IResources resources, ITimer timer) { NavigationService = navigationService; Accelerometer = accelerometer; Resources = resources; Timer = timer; Timer.OnUpdate += this.Update; Timer.OnDraw += this.Draw; }
public static int StillTicks = 10; // Still Buffer limit, increase the value to allow for more time before recognizing that the device is not moving. /* * setAccel - Methor to initialize the accelerometer. */ public static void setAccel() { if (!Resolver.IsSet) { var container = new SimpleContainer(); container.Register <IAccelerometer, Accelerometer>(); Resolver.SetResolver(container.GetResolver()); } accelerometer = Resolver.Resolve <IAccelerometer>(); accelerometer.Interval = AccelerometerInterval.Normal; }
public ComplementaryFilter(IAccelerometer accelerometer, IGyroscope gyroscope, int samplePeriodMs = 10, bool usePerformanceTimer = false) { this.accel = accelerometer; this.gyro = gyroscope; accelPoller = new Poller<IAccelerometer>(accelerometer, samplePeriodMs, usePerformanceTimer); accelPoller.OnSensorValueChanged += PollerEvent; if (accelerometer != gyroscope) // if we have two different sensors { gyroPoller = new Poller<IAccelerometer>(accelerometer, samplePeriodMs, usePerformanceTimer); gyroPoller.OnSensorValueChanged += PollerEvent; } }
protected async void OnNavigatedTo2(NavigationEventArgs e) { base.OnNavigatedTo(e); var samples = 0; var model = (DataContext as MainViewModel).MyModel; metawear = MbientLab.MetaWear.Win10.Application.GetMetaWearBoard(e.Parameter as BluetoothLEDevice); //accelerometer = metawear.GetModule<IAccelerometer>(); //gyro = metawear.GetModule<IGyroBmi160>(); //gyro.Configure(); //accelerometer.Configure(odr: 100f, range: 8f); m_SensorFusion = metawear.GetModule <ISensorFusionBosch>(); gyro = metawear.GetModule <IGyroBmi160>(); gyro.Configure(OutputDataRate._100Hz); accelerometer = metawear.GetModule <IAccelerometer>(); accelerometer.Configure(odr: 100f, range: 8f); m_SensorFusion.Configure(); await m_SensorFusion.EulerAngles.AddRouteAsync(source => { source.Stream(async data => { await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { var value = data.Value <EulerAngles>(); (model.Series[0] as LineSeries).Points.Add(new DataPoint(samples, value.Pitch)); (model.Series[1] as LineSeries).Points.Add(new DataPoint(samples, value.Roll)); (model.Series[2] as LineSeries).Points.Add(new DataPoint(samples, value.Yaw)); samples++; model.InvalidatePlot(true); if (samples > MainViewModel.MAX_DATA_SAMPLES) { model.Axes[1].Reset(); model.Axes[1].Maximum = samples; model.Axes[1].Minimum = (samples - MainViewModel.MAX_DATA_SAMPLES); model.Axes[1].Zoom(model.Axes[1].Minimum, model.Axes[1].Maximum); } GyroText.Text = value.ToString(); }); }); }); m_SensorFusion.Start(); m_SensorFusion.EulerAngles.Start(); }
/// <summary> /// Construct a new Complementary filter with the specified accelerometer and gyroscope (which is often the same IC) /// </summary> /// <param name="accelerometer">The accelerometer to use</param> /// <param name="gyroscope">The gyroscope to use</param> /// <param name="samplePeriodMs">The sample period to poll these devices at</param> /// <param name="useHighResolutionTimer">Whether to use an accurate (but CPU-hungry) timer</param> public ComplementaryFilter(IAccelerometer accelerometer, IGyroscope gyroscope, int samplePeriodMs = 10, bool useHighResolutionTimer = false) { //RollQuaternion = new Quaternion(Xaxis, 0); //PitchQuaternion = new Quaternion(Yaxis, 0); accel = accelerometer; gyro = gyroscope; accelPoller = new Poller <IAccelerometer>(accelerometer, samplePeriodMs, useHighResolutionTimer); accelPoller.OnNewSensorValue += PollerEvent; if (accelerometer != gyroscope) // if we have two different sensors { gyroPoller = new Poller <IAccelerometer>(accelerometer, samplePeriodMs, useHighResolutionTimer); gyroPoller.OnNewSensorValue += PollerEvent; } }
public void ProcessAccelerometer(IAccelerometer accelrometer) { AccelerometerProcessRequest p = new AccelerometerProcessRequest(); p.Analyzer = _analyzer as IAccelerometerAnalyzer; p.CurrentAccelerometer = accelrometer; lock (_lockObject) { _requestQueue.Enqueue(p); if (_requestQueue.Count == 1) // the only element that we just inserted is there { Monitor.Pulse(_lockObject); } } }
public MainViewModel(IAccelerometer accelerometer = null, IGyroscope gyroscope = null, IMagnetometer magnetometer = null, ICompass compass = null, IAmbientLight ambientLight = null, IBarometer barometer = null, IPedometer pedometer = null, IProximity proximity = null) { this.Sensors = new List <ISensorViewModel>(); this.AddIf(accelerometer, "G"); this.AddIf(gyroscope, "G"); this.AddIf(magnetometer, "M"); this.AddIf(compass, "D"); this.AddIf(ambientLight, "Light"); this.AddIf(barometer, "Pressure"); this.AddIf(pedometer, "Steps"); this.AddIf(proximity, "Near"); }
public override async Task Stop() { Sensor = null; }
///<summary> /// Constructor that sets current accelerometer data for the event. </summary> public AccelerometerChangedEventArgs(IAccelerometer accelerometerData) { _accelerometer = accelerometerData; }
/// <summary> /// Initializes a new instance of the <see cref="AcceleratorSensorPage"/> class. /// </summary> public AcceleratorSensorPage() { var device = Resolver.Resolve<IDevice> (); Title ="Accelerator Sensor"; if (device.Accelerometer == null) { Content = new Label () { TextColor = Color.Red, Text = "Device does not have accelerometer sensor or it is not enabled." }; return; } _accelerometer = device.Accelerometer; var grid = new StackLayout (); _xsensor = new SensorBarView () { HeightRequest = 75, WidthRequest = 250, MinimumHeightRequest = 10, MinimumWidthRequest = 50, BackgroundColor = BackgroundColor // VerticalOptions = LayoutOptions.Fill, // HorizontalOptions = LayoutOptions.Fill }; _ysensor = new SensorBarView() { HeightRequest = 75, WidthRequest = 250, MinimumHeightRequest = 10, MinimumWidthRequest = 50, BackgroundColor = BackgroundColor // VerticalOptions = LayoutOptions.Fill, // HorizontalOptions = LayoutOptions.Fill }; _zsensor = new SensorBarView() { HeightRequest = 75, WidthRequest = 250, MinimumHeightRequest = 10, MinimumWidthRequest = 50, BackgroundColor = BackgroundColor // VerticalOptions = LayoutOptions.Fill, // HorizontalOptions = LayoutOptions.Fill }; grid.Children.Add (new Label () { Text = string.Format ("Accelerometer data for {0}", device.Name) }); grid.Children.Add (new Label () { Text = "X", XAlign = TextAlignment.Center }); grid.Children.Add (_xsensor); grid.Children.Add (new Label () { Text = "Y", XAlign = TextAlignment.Center }); grid.Children.Add (_ysensor); grid.Children.Add (new Label () { Text = "Z", XAlign = TextAlignment.Center }); grid.Children.Add (_zsensor); Content = grid; }
public StoreAccelerometerData(IAccelerometer accelerometer, ICrudProvider crud) { this.meter = accelerometer; this.crud = crud; }
/// <summary> /// Initializes a new instance of the <see cref="Compass"/> class. /// </summary> public Accelerometer() { nativeAccel = MXContainer.Resolve <IAccelerometer>(); }
public SharedCompassImpl(IAccelerometer accelerometer = null, IMagnetometer magnetometer = null) { this.accelerometer = accelerometer; this.magnetometer = magnetometer; }
public async override Task SetUp() { await base.SetUp(); accelerometer = metawear.GetModule <IAccelerometer>(); }
private void start_Click(object sender, System.Windows.RoutedEventArgs e) { acc = AccelerometerHelper.GetAccelerometer(); acc.ReadingChanged += acc_ReadingChanged; acc.Start(); }
private void instantiateModule(Module module, ModuleInfo info) { if (info.Present()) { switch (module) { case SWITCH: persistent.modules.Add(typeof(ISwitch).FullName, new Switch(bridge)); break; case LED: persistent.modules.Add(typeof(ILed).FullName, new Led(bridge)); break; case ACCELEROMETER: IAccelerometer accelerometer = null; switch (info.implementation) { case AccelerometerMma8452q.IMPLEMENTATION: accelerometer = new AccelerometerMma8452q(bridge); persistent.modules.Add(typeof(IAccelerometerMma8452q).FullName, accelerometer); break; case AccelerometerBmi160.IMPLEMENTATION: accelerometer = new AccelerometerBmi160(bridge); persistent.modules.Add(typeof(IAccelerometerBosch).FullName, accelerometer); persistent.modules.Add(typeof(IAccelerometerBmi160).FullName, accelerometer); break; case AccelerometerBma255.IMPLEMENTATION: accelerometer = new AccelerometerBma255(bridge); persistent.modules.Add(typeof(IAccelerometerBosch).FullName, accelerometer); persistent.modules.Add(typeof(IAccelerometerBma255).FullName, accelerometer); break; } if (accelerometer != null) { persistent.modules.Add(typeof(IAccelerometer).FullName, accelerometer); } break; case TEMPERATURE: persistent.modules.Add(typeof(ITemperature).FullName, new Temperature(bridge)); break; case GPIO: persistent.modules.Add(typeof(IGpio).FullName, new Gpio(bridge)); break; case NEO_PIXEL: persistent.modules.Add(typeof(INeoPixel).FullName, new NeoPixel(bridge)); break; case IBEACON: persistent.modules.Add(typeof(IIBeacon).FullName, new IBeacon(bridge)); break; case HAPTIC: persistent.modules.Add(typeof(IHaptic).FullName, new Haptic(bridge)); break; case DATA_PROCESSOR: persistent.modules.Add(typeof(IDataProcessor).FullName, new DataProcessor(bridge)); break; case EVENT: persistent.modules.Add(typeof(Event).FullName, new Event(bridge)); break; case LOGGING: persistent.modules.Add(typeof(ILogging).FullName, new Logging(bridge)); break; case TIMER: persistent.modules.Add(typeof(Timer).FullName, new Timer(bridge)); break; case SERIAL_PASSTHROUGH: persistent.modules.Add(typeof(ISerialPassthrough).FullName, new SerialPassthrough(bridge)); break; case MACRO: persistent.modules.Add(typeof(IMacro).FullName, new Macro(bridge)); break; case GSR: break; case SETTINGS: persistent.modules.Add(typeof(ISettings).FullName, new Settings(bridge)); break; case BAROMETER: IBarometerBosch barometer = null; switch (info.implementation) { case BarometerBmp280.IMPLEMENTATION: barometer = new BarometerBmp280(bridge); persistent.modules.Add(typeof(IBarometerBmp280).FullName, barometer); break; case BarometerBme280.IMPLEMENTATION: barometer = new BarometerBme280(bridge); persistent.modules.Add(typeof(IBarometerBme280).FullName, barometer); break; } if (barometer != null) { persistent.modules.Add(typeof(IBarometerBosch).FullName, barometer); } break; case GYRO: persistent.modules.Add(typeof(IGyroBmi160).FullName, new GyroBmi160(bridge)); break; case AMBIENT_LIGHT: persistent.modules.Add(typeof(IAmbientLightLtr329).FullName, new AmbientLightLtr329(bridge)); break; case MAGNETOMETER: persistent.modules.Add(typeof(IMagnetometerBmm150).FullName, new MagnetometerBmm150(bridge)); break; case HUMIDITY: persistent.modules.Add(typeof(IHumidityBme280).FullName, new HumidityBme280(bridge)); break; case COLOR_DETECTOR: persistent.modules.Add(typeof(IColorTcs34725).FullName, new ColorTcs34725(bridge)); break; case PROXIMITY: persistent.modules.Add(typeof(IProximityTsl2671).FullName, new ProximityTsl2671(bridge)); break; case SENSOR_FUSION: persistent.modules.Add(typeof(ISensorFusionBosch).FullName, new SensorFusionBosch(bridge)); break; case DEBUG: persistent.modules.Add(typeof(IDebug).FullName, new Debug(bridge)); break; } } }
public override void Dispose() { Sensor = null; }
public AcceleratorSensorPage() { var device = Resolver.Resolve <IDevice> (); this.Title = "Accelerator Sensor"; if (device.Accelerometer == null) { this.Content = new Label() { TextColor = Color.Red, Text = "Device does not have accelerometer sensor or it is not enabled." }; return; } this.accelerometer = device.Accelerometer; var grid = new StackLayout(); this.xsensor = new SensorBarView() { HeightRequest = 75, WidthRequest = 250, MinimumHeightRequest = 10, MinimumWidthRequest = 50, BackgroundColor = this.BackgroundColor // VerticalOptions = LayoutOptions.Fill, // HorizontalOptions = LayoutOptions.Fill }; this.ysensor = new SensorBarView() { HeightRequest = 75, WidthRequest = 250, MinimumHeightRequest = 10, MinimumWidthRequest = 50, BackgroundColor = this.BackgroundColor // VerticalOptions = LayoutOptions.Fill, // HorizontalOptions = LayoutOptions.Fill }; this.zsensor = new SensorBarView() { HeightRequest = 75, WidthRequest = 250, MinimumHeightRequest = 10, MinimumWidthRequest = 50, BackgroundColor = this.BackgroundColor // VerticalOptions = LayoutOptions.Fill, // HorizontalOptions = LayoutOptions.Fill }; grid.Children.Add(new Label() { Text = string.Format("Accelerometer data for {0}", device.Name) }); grid.Children.Add(new Label() { Text = "X", XAlign = TextAlignment.Center }); grid.Children.Add(xsensor); grid.Children.Add(new Label() { Text = "Y", XAlign = TextAlignment.Center }); grid.Children.Add(ysensor); grid.Children.Add(new Label() { Text = "Z", XAlign = TextAlignment.Center }); grid.Children.Add(zsensor); this.Content = grid; }
public override void SetUp() { base.SetUp(); accelerometer = metawear.GetModule <IAccelerometer>(); }