///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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(); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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); }
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); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public void ConnectServo(Servo servo, int setServoIndex, int setSensorIndex) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// { servos.Add(servo); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void servo_Changed(Servo value) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// { }