/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public void SetServo(Servo value)
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        {
            servo = value;

            servo.Changed += new ServoDelegate(servo_Changed);

            servo_Changed(servo);
        }
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        void SyncDisplay(Servo value)
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        {
            nameLabel.Content = servo.Name;

            angleSlider.Slider.Maximum   = servo.Range.maximum;
            angleSlider.Slider.Minimum   = servo.Range.minimum;
            angleSlider.MaxBound         = servo.Stops.maximum;
            angleSlider.MinBound         = servo.Stops.minimum;
            angleSlider.Slider.Value     = servo.Target;
            angleSlider.slider.Reference = servo.Angle;
        }
예제 #3
0
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        void SetValues(Servo servo)
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        {
            name        = servo.name;
            sensor      = servo.sensor;
            range       = servo.range;
            stops       = servo.stops;
            offset      = servo.offset;
            orientation = servo.orientation;
            flipped     = servo.flipped;

            Update();
        }
예제 #4
0
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public void LoadFromXmlFile(string setFileName)
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        {
            //set the file name
            FileName = setFileName;

            //create the serializer object
            XmlSerializer serializer = new XmlSerializer(typeof(Servo));

            //open the file stream
            FileStream fileStream = new FileStream(fileName, FileMode.Open);

            //deserialize the file into the servo instance
            Servo servo = (Servo)serializer.Deserialize(fileStream);

            SetValues(servo);
        }
예제 #5
0
        static async Task ControlServos()
        {
            Console.WriteLine("Connecting to MCU ({0})...", PORT);
            mcu = new Microcontroller(new SerialTransport(PORT));
            await mcu.Connect();

            Console.WriteLine("Attaching servos...");
            var pan = new Servo(mcu, 1, 1000, 2000);
            await pan.Initialize();

            var tilt = new Servo(mcu, 0, 1000, 2000);
            await tilt.Initialize();

            Console.WriteLine("Control servos with left thumbstick. Press 'Back' to disconnect.");

            var lastY = float.NaN;
            var lastX = float.NaN;

            GamePadState pad;

            do
            {
                pad = GamePad.GetState(PlayerIndex.One);

                var y = pad.ThumbSticks.Left.Y;
                var x = pad.ThumbSticks.Left.X;

                if (x.CompareTo(lastX) != 0)
                {
                    lastX = x;
                    Console.WriteLine("X: {0}", x);
                    await pan.Write(x);
                }
                if (y.CompareTo(lastY) != 0)
                {
                    lastY = y;
                    Console.WriteLine("Y: {0}", y);
                    await tilt.Write(y);
                }
            } while (pad.Buttons.Back != ButtonState.Pressed);

            Console.WriteLine("Disconnecting from MCU...");
            await mcu.Disconnect();
        }
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 void servo_Changed(Servo value)
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 {
     Dispatcher.Invoke(new ServoDelegate(SyncDisplay), servo);
 }
예제 #7
0
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 public void ConnectServo(Servo servo, int setServoIndex, int setSensorIndex)
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 {
     servos.Add(servo);
 }
예제 #8
0
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 void servo_Changed(Servo value)
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 {
 }