コード例 #1
0
        private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            //==============================================================================================
            // Reference D4: Externally sourced program
            // Purpose: Steps counting Algorithm
            // Date: 05 Nov 2020
            // Source: YouTube Video
            // Author: Programmer world
            // Url: https://www.youtube.com/watch?v=o-qpVefrfVA
            // Adaptation: Got the idea on how to calculate magnitude,
            //===============================================================================================

            // Get the X,Y,Z Acceleration readings from the phone, and saving the, into variables as doubles
            float valueX = e.Reading.Acceleration.X;
            float valueY = e.Reading.Acceleration.Y;
            float valueZ = e.Reading.Acceleration.Z;

            // Calculates magnitude which represents the vibration on three axis coordinates (X,Y,Z)
            double currentMagnitude = Math.Sqrt((valueX * valueX) + (valueY * valueY) + (valueZ * valueZ));

            // Calculates the difference between the current and the last magnitude & checks how much of those
            // coordinate calues went up or low
            double differenceMagnitude = currentMagnitude - lastMagnitude;

            lastMagnitude = currentMagnitude;

            // If the difference is greater than 4, Count that step as walking
            if (differenceMagnitude > 4)
            {
                stepCount++;
                walkingSteps++;
            }

            //===============================================================================================
            // End reference D4
            //===============================================================================================

            // If the difference is greater than 6, Count that step as Running
            else if (differenceMagnitude > 6)
            {
                stepCount++;
                runningSteps++;
            }

            walkingCalories = walkingSteps * calorieBurntPerStep;   //
            runningCalories = runningSteps * calorieBurntPerStep;

            lblSteps.Text      = stepCount.ToString();              // Update steps (in circle)
            lblTotalSteps.Text = stepCount.ToString();              // Update total steps

            lblWalkSteps.Text = walkingSteps.ToString();            // Update walking steps done so far
            lblRunSteps.Text  = runningSteps.ToString();            // Update running steps done so far

            lblWalkCalorie.Text = walkingCalories.ToString();       // Update calories burnt when walking
            lblRunCalorie.Text  = runningCalories.ToString();       // Update calories burnt when running

            var copy = new PersonalData();

            copy.MySteps = stepCount;
        }
コード例 #2
0
 void _analyzer_handle(object sender, AccelerometerChangedEventArgs e)
 {
     foreach (AnalyzerWrapper analyzer in _analyzerWrapers)
     {
         analyzer.ProcessAccelerometer(e.AccelerometerData);
     }
 }
コード例 #3
0
        void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            var data = e.Reading;

            sensorData.accelX = data.Acceleration.X;
            sensorData.accelY = data.Acceleration.Y;
            sensorData.accelZ = data.Acceleration.Z;
            CalculateRotationVectors();
            if (sensorData.pitch < -17 && CommandService.roverCommand.Left == 0)
            {
                CommandService.roverCommand.Left  = 1;
                CommandService.roverCommand.Right = 0;
                CommandService.SendCommand();
            }
            else if (sensorData.pitch < 7 && sensorData.pitch > -7 && (CommandService.roverCommand.Right == 1 || CommandService.roverCommand.Left == 1))
            {
                CommandService.roverCommand.Left  = 0;
                CommandService.roverCommand.Right = 0;
                CommandService.SendCommand();
            }
            else if (sensorData.pitch > 17 && CommandService.roverCommand.Right == 0)
            {
                CommandService.roverCommand.Right = 1;
                CommandService.roverCommand.Left  = 0;
                CommandService.SendCommand();
            }
            //Debug.WriteLine("Pitch "+sensorData.pitch+" Roll "+sensorData.roll+" Yaw "+sensorData.yaw);
        }
コード例 #4
0
        private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            var data = e.Reading;

            double remeberHeadX = currentPosition.X;
            double remeberHeadY = currentPosition.Y;

            currentPosition.X += -1 * data.Acceleration.X / 40;
            currentPosition.Y += data.Acceleration.Y / 40;

            if (checkHeadBounds())
            {
                if (haveEaten())
                {
                    updateApples();
                    drawTail(new Coordinate(remeberHeadX, remeberHeadY), true);
                    appleCount++;
                }
                else
                {
                    drawTail(new Coordinate(remeberHeadX, remeberHeadY), false);
                }
            }
            else
            {
                stopGame();
                resetSnake();
            }

            LabelPos.Text = $"Apple count {appleCount}";
        }
コード例 #5
0
        private void AccelerometerReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            sensorX = e.Reading.Acceleration.X * 9.81f;
            sensorY = -e.Reading.Acceleration.Y * 9.81f;

            ManageSensorValues();
        }
コード例 #6
0
        void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            var data = e.Reading;

            Console.WriteLine($"Reading: X: {data.Acceleration.X}, Y: {data.Acceleration.Y}, Z: {data.Acceleration.Z}");
            // Process Acceleration X, Y, and Z
        }
コード例 #7
0
 private void OnReadingChanged(object sender, AccelerometerChangedEventArgs e)
 {
     ReadingChanged?.Invoke(this, new AccelerometerChangeEventArgs()
     {
         X = e.Reading.Acceleration.X, Y = e.Reading.Acceleration.Y, Z = e.Reading.Acceleration.Z
     });
 }
コード例 #8
0
        void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            var data     = e.Reading;
            var x        = data.Acceleration.X;
            var y        = data.Acceleration.Y;
            var z        = data.Acceleration.Z;
            var position = CarouselViewer.Position;

            if (data.Acceleration.X > 0.1)
            {
                if (CarouselViewer.Position == images.Count - 1)
                {
                    CarouselViewer.Position = 0;
                }
                else
                {
                    CarouselViewer.Position = CarouselViewer.Position + 1;
                }
            }
            //else if (data.Acceleration.X > 0.3)
            //{
            //    if (CarouselViewer.Position == 0)
            //    {
            //        CarouselViewer.Position = images.Count - 1;
            //    }
            //    else
            //    {
            //        CarouselViewer.Position = CarouselViewer.Position - 1;
            //    }
            //}
        }
コード例 #9
0
        private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            var data = e.Reading;

            if (Math.Abs(data.Acceleration.Y) > 0.02)
            {
                if (Math.Abs(data.Acceleration.Y) > 150)
                {
                    CallEmergency();
                }
                Console.WriteLine($"IN REGULAR PROJ: Reading: X: {data.Acceleration.X}, Y: " +
                                  $"{data.Acceleration.Y}, Z: {data.Acceleration.Z}");
                accelY = data.Acceleration.Y;

                accelY = data.Acceleration.Y; //actual acceleration in Y axis, measured in Gs
                //TrackingPage.AccelDisplay.Text = f.ToString("00.000");
                AccelerationDataPoint point = new AccelerationDataPoint();
                point.time   = new DateTime();
                point.accelY = accelY;
                App.Database.SaveItemAsync(point);
                Console.WriteLine($"Wrote {accelY} to database");
                //return accelY;
            }

            //return 0.0;
        }
 private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
 {
     Device.BeginInvokeOnMainThread(() =>
     {
         circularGauge.Value = e.Reading.Acceleration.X;
     });
 }
コード例 #11
0
        void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            if (!isLaunchedA)
            {
                var data = e.Reading;

                // Process Acceleration X, Y, and Z
                oldAccX = accX;
                oldAccY = accY;
                oldAccZ = accZ;
                accX    = Convert(data.Acceleration.X);
                accY    = Convert(data.Acceleration.Y);
                accZ    = Convert(data.Acceleration.Z);
                computeDelta();

                CheckMoving();

                // Log
                Log.Debug("Dev_Data_Acc_Delta", $"Delta Accelerometer: X: {deltaAccX }, Y: {deltaAccY }, Z: {deltaAccZ}");
                Log.Debug("Dev_Data_Acc_Coord", $"Reading Accelerometer: X: {data.Acceleration.X }, Y: {data.Acceleration.Y }, Z: {data.Acceleration.Z}");
                Log.Debug("Dev_Data_Acc_Coord", $"Round Accelerometer: X: {accX }, Y: {accY }, Z: {accZ}");

                isLaunchedA = true;
            }
        }
コード例 #12
0
        async void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs args)
        {
            await Task.Delay(5);

            double degree;

            if (args.Reading.Acceleration.Y >= -1 && args.Reading.Acceleration.Y <= 1)
            {
                degree = Math.Asin(args.Reading.Acceleration.Y);
                degree = degree * (180 / 3.14);
                degree = degree + 90;

                int read = (int)Math.Round((decimal)degree);

                if (read < 10)
                {
                    read = 0;
                }

                if (read > 170)
                {
                    read = 180;
                }

                if (read >= 0 && read <= 180)
                {
                    myReuslt.Text = read.ToString() + "°";
                    MessagingCenter.Send <MainPage, int>(this, "tilt", read);
                }
            }
        }
        private void OnAccelerometerReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            CurrentAcceleration = e.Reading.Acceleration;

            var x = e.Reading.Acceleration.X;

            if (x < -1.5)
            {
                if (AccelerometerThresholdExceeded)
                {
                    return;
                }

                AccelerometerThresholdExceeded = true;
                SelectedImageIndex--;
            }
            else if (x > 1.5)
            {
                if (AccelerometerThresholdExceeded)
                {
                    return;
                }

                AccelerometerThresholdExceeded = true;
                SelectedImageIndex++;
            }
            else
            {
                AccelerometerThresholdExceeded = false;
            }
        }
コード例 #14
0
 /// <summary>Updates the accelerometer values and trigger the event.</summary>
 ///
 /// <remarks>Jordi Hutjens, 10-11-2018.</remarks>
 private void UpdateAccValues()
 {
     try
     {
         AccelerometerChangedEventArgs args = new AccelerometerChangedEventArgs
         {
             AccelerometerX = float.Parse(receivedStrFiltered[2]),
             AccelerometerY = float.Parse(receivedStrFiltered[3]),
             AccelerometerZ = float.Parse(receivedStrFiltered[4])
         };
         OnAccelerometerChanged(args);
         if (CheckParameters.Instance.LHRunning)
         {
             lhsend.SendAccDataToLH(args);
         }
     }
     catch (Exception)
     {
         AccelerometerChangedEventArgs args = new AccelerometerChangedEventArgs
         {
             AccelerometerX = 0.0F,
             AccelerometerY = 0.0F,
             AccelerometerZ = 0.0F
         };
         OnAccelerometerChanged(args);
     }
 }
コード例 #15
0
        private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            var data = e.Reading;

            oriX = data.Acceleration.X;
            oriY = data.Acceleration.Y;
        }
コード例 #16
0
    // =================================================================================================
    // Accelerometer_ReadingChanged
    //
    // The accelerometer posts about 30 readings per timer-event.  
    //    This function is entered about 30 times per ONE CPR Compress.
    // One of the 30+ accelerator events happen to be at the same
    //    moment the timer event happen.
    //
    // The first 5 readings are discarded; noise.
    //
    // The accelerator axis are:
    //     X / Y parallel to surface ( think north, east)
    //     Z perpendicular to surface ( think down to earth center, up into space)
    //
    // If Accelerator Z direction (away from ground) is: 
    // (+, positive), it points down, and we have a CPR Compress. CONTINUE 
    // (-, negative), it points up, and we have a CPR Recoil, STOP.
    // =================================================================================================
    private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
    {
      //
      noise_Readings++;
      if (noise_Readings <= noiseRead_Level) return;// Skip very first (5) reads; Noise
      if (inPrinting) return;                       // in printing, and NO ACTIVITIES!!
      // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
      read_XYZ(e.Reading);                          // Get the X, Y, Z, total Z, readings.
                                                    //
      if (newTimerEvent)                            // Display at each timer event (100/min, every approx 30th acceleration read)
      {
        if (aTotalZ_cnt > 0)                        // after at least one accelerator read
        {
                                                    // Phone must be flat for a valid accelerometer reading
          if (isPhoneLayingFlat(tilt_40, aX, aY))   // iS tilted IF X/Y > 0.4 (40).
          {
            aclAvgZ = aTotalZ / aTotalZ_cnt;          // Get average Z
            thirtyCountProc();                      // process CPR count (30, and Sets)
            Gen_Utility_1.BeepOnce();                     // beep if beep is allowed
                                                    // Only process "Downward" events
                                                    //if (aclAvgZ < 98)                       // 98 = rest on a desk
            displayCPR_Actions(aclAvgZ);            // show " Correct CPR ", " Too Shallow ", " Too Deep "
            showTESTdata(aclAvgZ);
            //
            newTimerEvent = false;                  // turned on inside timer event
            aTotalZ = 0;                            //
            aTotalZ_cnt = 0;                        //
          }
        }
      }

    }
コード例 #17
0
        void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            // Get the data reading
            var data = e.Reading;

            // Refresh the chart with the new value
            vm.RefreshValuesChart(data.Acceleration.X, data.Acceleration.Y, data.Acceleration.Z);
        }
コード例 #18
0
        void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            AccelerometerData data = e.Reading;

            valX = data.Acceleration.X;
            valY = data.Acceleration.Y;
            valZ = data.Acceleration.Z;
        }
コード例 #19
0
 void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
 {
     MainThread.BeginInvokeOnMainThread(() => {
         xLabel.Text = e.Reading.Acceleration.X.ToString();
         yLabel.Text = e.Reading.Acceleration.Y.ToString();
         zLabel.Text = e.Reading.Acceleration.Z.ToString();
     });
 }
コード例 #20
0
        void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            var data = e.Reading;

            Console.WriteLine($"Reading: X: {data.Acceleration.X}, Y: {data.Acceleration.Y}, Z: {data.Acceleration.Z}");
            label.Text = String.Format("X: {0,0:F4} G\nY: {1,0:F4} G\nZ: {2,0:F4} G", data.Acceleration.X, data.Acceleration.Y, data.Acceleration.Z);
            // Process Acceleration X, Y, and Z
        }
コード例 #21
0
ファイル: XEAccelerometer.cs プロジェクト: sphauck/XEGallery
        private void OnReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            XAccelleration = e.Reading.Acceleration.X;
            YAcceleration  = e.Reading.Acceleration.Y;
            ZAcceleration  = e.Reading.Acceleration.Z;

            ReadingsChanged?.Invoke(this, e);
        }
コード例 #22
0
        static void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            var data = e.Reading;

            if ((data.Acceleration.X > sensor_edge) && (LastPage != nameof(SendEmailPage)))
            {
                Shell.Current.GoToAsync($"{nameof(SendEmailPage)}");
            }
        }
コード例 #23
0
        public void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            var data = e.Reading;

            this.AccX = data.Acceleration.X;
            this.AccY = data.Acceleration.Y;
            this.AccZ = data.Acceleration.Z;
            //Console.WriteLine($"Accelerometer: X: {data.Acceleration.X}, Y: {data.Acceleration.Y}, Z: {data.Acceleration.Z}");
        }
コード例 #24
0
        private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            var data = e.Reading;

            accX = data.Acceleration.X;
            accY = data.Acceleration.Y;

            canvasView.InvalidateSurface();
        }
コード例 #25
0
        private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            var data = e.Reading;

            XAccelerationValue  = data.Acceleration.X;
            YAccelerationValue  = data.Acceleration.Y;
            ZAccelerationValue  = data.Acceleration.Z;
            AccelerationAverage = Math.Sqrt(Math.Abs((data.Acceleration.X * data.Acceleration.X) + (data.Acceleration.Y * data.Acceleration.Y) + (data.Acceleration.Z * data.Acceleration.Z)));
        }
コード例 #26
0
ファイル: MotionViewModel.cs プロジェクト: SivaneshN/TimePass
        void Accelerometer_ShakeDetected(object sender, AccelerometerChangedEventArgs e)
        {
            // Process shake event
            //ToggleTorchMethodExecute(TorchStatus);
            var data = e.Reading;

            //Console.WriteLine($"Reading: X: {data.Acceleration.X}, Y: {data.Acceleration.Y}, Z: {data.Acceleration.Z}");
            AccReadings = $"Reading: X: {data.Acceleration.X}, Y: {data.Acceleration.Y}, Z: {data.Acceleration.Z}";
        }
コード例 #27
0
ファイル: MyoManager.cs プロジェクト: nzxxcy/CPRTutor
        protected virtual void OnAccelerometerChanged(AccelerometerChangedEventArgs accEvent)
        {
            EventHandler <AccelerometerChangedEventArgs> handler = AccelerometerChanged;

            if (handler != null)
            {
                handler(this, accEvent);
            }
        }
コード例 #28
0
        private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            Xamarin.Essentials.AccelerometerData reading = e.Reading;
            Vector3Data data = Acceleration;

            data.Value     = reading.Acceleration;
            data.TimeStamp = DateTime.UtcNow;
            data.SendNotification();
        }
コード例 #29
0
        private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
        {
            Coordinate coordinate = new Coordinate();

            coordinate.XValue = Math.Round(Convert.ToDouble(e.Reading.Acceleration.X) * 100 / 2.54, 2);
            coordinate.YValue = Math.Round(Convert.ToDouble(e.Reading.Acceleration.Y) * 100 / 2.54, 2);
            coordinate.ZValue = Math.Round(Convert.ToDouble(e.Reading.Acceleration.Z) * 100 / 2.54, 2);

            Coordinates.Add(coordinate);
        }
コード例 #30
0
ファイル: MyoManager.cs プロジェクト: nzxxcy/CPRTutor
        private void Myo_AccelerometerDataAcquired(object sender, AccelerometerDataEventArgs a)
        {
            AccelerometerChangedEventArgs args = new AccelerometerChangedEventArgs();

            args.accelerometerMag = a.Accelerometer.Magnitude();
            args.accelerometerX   = a.Accelerometer.X;
            args.accelerometerY   = a.Accelerometer.Y;
            args.accelerometerZ   = a.Accelerometer.Z;
            OnAccelerometerChanged(args);
        }