Esempio n. 1
0
 private void sliderTimer_Tick(object sender, EventArgs e)
 {
     if (activeServo > 0)
     {
         sliderTimer.Stop();
         double dblAngle = Math.Round(sliderActiveAngle.Value);
         byte   angle    = (byte)dblAngle;
         byte   oldAngle = servo[activeServo].angle;
         // if (angle == oldAngle) return;
         double diff = (byte)Math.Abs(angle - oldAngle);
         byte   time = (byte)(Math.Round(40.0 * diff / CONST.SERVO.MAX_ANGLE)); // 40 ~ 1s, 1s for 240 angle
         UBT.MoveServo((byte)activeServo, angle, time);
         int TimeMs = time * 25 + 100;                                          // add extra 100ms, seeem still not work, sometimes command cannot be executed for fast change.
         servoEndTicks = DateTime.Now.Ticks + TimeMs * TimeSpan.TicksPerMillisecond;
     }
 }
Esempio n. 2
0
 private void UpdateAngle()
 {
     if (activeServo > 0)
     {
         string sAngle = tbAngle.Text.Trim();
         int    angle;
         if (!int.TryParse(sAngle, out angle))
         {
             return;
         }
         if ((angle < 0) || (angle > 240))
         {
             UpdateInfo(string.Format("Invalid angle: {0}", angle));
         }
         sliderActiveAngle.Value = angle;
         UBT.MoveServo((byte)activeServo, (byte)angle, 0);
     }
 }
Esempio n. 3
0
        private void sliderTimer_Tick(object sender, EventArgs e)
        {
            sliderTimer.Stop();


            double dblAngle = Math.Round(sliderActiveAngle.Value);
            byte   angle    = (byte)dblAngle;

            UBT.MoveServo((byte)activeServo, angle, 0);
            if (sliderMode > 0)
            {
                // extra one time after stop
                if (sliderMode == 1)
                {
                    sliderMode = 0;
                }
                sliderTimer.Start();
            }
        }