private void Timer_Tick(object sender, object e) { /* Display the results (acceleration is measured in m/s^2) */ accel.getEvent(ref Accelevent); Debug.WriteLine("ACCEL "); Debug.WriteLine("X: " + Accelevent.acceleration.x + " " + "Y: " + Accelevent.acceleration.y + " " + "Z: " + Accelevent.acceleration.z + " m/s^2"); AccelXaxis.Text = Accelevent.acceleration.x.ToString(); AccelYaxis.Text = Accelevent.acceleration.y.ToString(); AccelZaxis.Text = Accelevent.acceleration.z.ToString(); /* Display the results (magnetic vector values are in micro-Tesla (uT)) */ mag.getEvent(ref Magevent); Debug.WriteLine("MAG "); Debug.WriteLine("X: " + Magevent.magnetic.x + " " + "Y: " + Magevent.magnetic.y + " " + "Z: " + Magevent.magnetic.z + " uT"); MagXaxis.Text = Magevent.magnetic.x.ToString(); MagYaxis.Text = Magevent.magnetic.y.ToString(); MagZaxis.Text = Magevent.magnetic.z.ToString(); /* Display the results (gyrocope values in rad/s) */ gyro.getEvent(ref Gyroevent); Debug.WriteLine("GYRO "); Debug.WriteLine("X: " + Gyroevent.gyro.x + " " + "Y: " + Gyroevent.gyro.y + " " + "Z: " + Gyroevent.gyro.z + " rad/s"); GyroXaxis.Text = Gyroevent.gyro.x.ToString(); GyroYaxis.Text = Gyroevent.gyro.y.ToString(); GyroZaxis.Text = Gyroevent.gyro.z.ToString(); /* Display the pressure sensor results (barometric pressure is measure in hPa) */ bmp.getEvent(ref Pressevent); if (Pressevent.pressure != 0) { /* Display atmospheric pressure in hPa */ Debug.WriteLine("PRESS :" + Pressevent.pressure + " hPa "); Pressure.Text = Pressevent.pressure.ToString(); /* Display ambient temperature in C */ float temperature = 0; bmp.getTemperature(ref temperature); Debug.WriteLine("TEMP :" + temperature + " C "); Temperature.Text = temperature.ToString(); /* Then convert the atmospheric pressure, SLP and temp to altitude */ /* Update this next line with the current SLP for better results */ float seaLevelPressure = Adafruit_BMP085_Unified.SENSORS_PRESSURE_SEALEVELHPA; float altitude = bmp.pressureToAltitude(seaLevelPressure, Pressevent.pressure, temperature); Debug.WriteLine("ALTI :" + altitude + " m "); Altitude.Text = altitude.ToString(); DateTime.Text = System.DateTime.Now.ToString(); SensorData SensorDataObj = new SensorData(Accelevent.acceleration.x, Accelevent.acceleration.y, Accelevent.acceleration.z, Magevent.magnetic.x, Magevent.magnetic.y, Magevent.magnetic.z, Gyroevent.gyro.x, Gyroevent.gyro.y, Gyroevent.gyro.z, Pressevent.pressure, temperature, altitude, System.DateTime.Now.ToString("dd-MMM-yyyy HH:mm:ss tt")); String JsonData = Serialize(SensorDataObj); EventHubSend(JsonData); } }
// Timer loop //NOT USED ********************************************************** private void Timer_Tick(object sender, object e) { var xx = Stopwatch.StartNew(); /* Display the results (acceleration is measured in m/s^2) */ accel.getEvent(ref Accelevent); //Debug.WriteLine("ACCEL "); //Debug.WriteLine("X: " + Accelevent.acceleration.x + " " + "Y: " + Accelevent.acceleration.y + " " + "Z: " + Accelevent.acceleration.z + " m/s^2"); /* Display the results (magnetic vector values are in micro-Tesla (uT)) */ //mag.getEvent(ref Magevent); //Debug.WriteLine("MAG "); //Debug.WriteLine("X: " + Magevent.magnetic.x + " " + "Y: " + Magevent.magnetic.y + " " + "Z: " + Magevent.magnetic.z + " uT"); //MagXaxis.Text = Magevent.magnetic.x.ToString(); //MagYaxis.Text = Magevent.magnetic.y.ToString(); //MagZaxis.Text = Magevent.magnetic.z.ToString(); /* Display the results (gyrocope values in rad/s) */ gyro.getEvent(ref Gyroevent); //gyroXangle += (Gyroevent.gyro.x * timerMS / 1000); //gyroYangle += (Gyroevent.gyro.y * timerMS / 1000); //gyroZangle += (Gyroevent.gyro.z * timerMS / 1000); //Debug.WriteLine("GYRO "); //Debug.WriteLine("X: " + Gyroevent.gyro.x + " " + "Y: " + Gyroevent.gyro.y + " " + "Z: " + Gyroevent.gyro.z + " rad/s"); int elapsed = (int)tt.ElapsedMilliseconds; tt.Restart(); calcX = XkalmanCalculate((float)(Math.Atan2(Accelevent.acceleration.y, Accelevent.acceleration.z) * Pi180), Gyroevent.gyro.x, elapsed); calcY = YkalmanCalculate((float)(Math.Atan2(-Accelevent.acceleration.x, Math.Sqrt(Accelevent.acceleration.y * Accelevent.acceleration.y + Accelevent.acceleration.x * Accelevent.acceleration.z)) * Pi180), Gyroevent.gyro.y, elapsed); //calcZ = ZkalmanCalculate((float)(Math.Atan2(Accelevent.acceleration.z, Accelevent.acceleration.y) * Pi180), Gyroevent.gyro.z, elapsed); //COULD USE THE CALIBRATE FOR SQUARE ON THE LOAD THEN USE THE YAW (Z) TO MEASURE HOOK SPIN calcZ = 0; //calcX = 0.98F * (calcX + Gyroevent.gyro.z * timerMS * SCALE_GYR_ANGLE / 1000F) + 0.02F * (float)(90 - Math.Atan2(Accelevent.acceleration.y, Accelevent.acceleration.x) * (180 / Math.PI)); //calcY = 0; //calcZ = 0.98F * (calcZ + Gyroevent.gyro.z * timerMS * SCALE_GYR_ANGLE / 1000F) + 0.02F * (float)(Math.Atan2(Accelevent.acceleration.z, Accelevent.acceleration.y) * (180 / Math.PI)); if (timerCnt == 5) { //float AccX = (AccXAvg / 4) * SCALE_ACC_ANGLE; //float AccY = (AccYAvg / 4) * SCALE_ACC_ANGLE; //float AccZ = (AccZAvg / 4) * SCALE_ACC_ANGLE; //var AccX = 90 - Math.Atan2(AccYAvg / 4, AccXAvg / 4) * (180 / Math.PI); //var AccZ = Math.Atan2(AccZAvg / 4, AccYAvg / 4) * (180 / Math.PI); //var AccY = 0; //AccelXaxis.Text = String.Format("{0:0.0}", AccX); //AccelYaxis.Text = String.Format("{0:0.0}", AccY); //AccelZaxis.Text = String.Format("{0:0.0}", AccZ); AccelXaxisC.Text = String.Format("{0:0.0}", calcX); AccelYaxisC.Text = String.Format("{0:0.0}", calcY); AccelZaxisC.Text = String.Format("{0:0.0}", calcZ); //GyroXaxis.Text = String.Format("{0:0.0}", gyroXangle); //GyroYaxis.Text = String.Format("{0:0.0}", gyroYangle); //GyroZaxis.Text = String.Format("{0:0.0}", gyroZangle); //GyroXaxis.Text = Gyroevent.gyro.x.ToString(); //GyroYaxis.Text = Gyroevent.gyro.y.ToString(); //GyroZaxis.Text = Gyroevent.gyro.z.ToString(); /* Display ambient temperature in C */ float temperature = 0; //bmp.getTemperature(ref temperature); //Temperature.Text = temperature.ToString(); /* Display the pressure sensor results (barometric pressure is measure in hPa) */ //////////////////////////////bmp.getEvent(ref Pressevent); /* Display atmospheric pressure in hPa */ //Debug.WriteLine("PRESS :" + Pressevent.pressure + " hPa "); Pressure.Text = Pressevent.pressure.ToString(); /* Then convert the atmospheric pressure, SLP and temp to altitude */ /* Update this next line with the current SLP for better results */ float seaLevelPressure = Adafruit_BMP085_Unified.SENSORS_PRESSURE_SEALEVELHPA; float altitude = bmp.pressureToAltitude(seaLevelPressure, Pressevent.pressure, temperature); //Debug.WriteLine("ALTI :" + altitude + " m " ); Altitude.Text = altitude.ToString(); //DateTime.Text = System.DateTime.Now.ToString(); mySocket.Send(calcX + ":" + calcY + ":" + calcZ + ":" + (-1 * gyroXangle).ToString() + ":" + (-1 * gyroYangle).ToString() + ":" + (-1 * gyroZangle).ToString() + ":" + altitude.ToString()); //AccXAvg = 0; //AccYAvg = 0; //AccZAvg = 0; timerCnt = 0; Status.Text = elapsed.ToString(); } timerCnt++; }