Esempio n. 1
0
        /*
         *              // Set these properties based on your robot drivetrain/encoder config:
         *              encoder.Resolution = 44;       // 44 ticks per revolution
         *              encoder.WheelDiameter = 2.0;   // 2 inch wheel diameter
         *              encoder.WheelEncoderId = WheelEncoderId.Encoder1;
         *
         *              // Clear encoder value:
         *              encoder.Clear();
         *
         *              // If you're interested in absolute distance, then use this:
         *              encoder.DistanceChangedThreshold = 0.25;  // 0.25 inches
         *              encoder.DistanceChanged += new
         *              HardwareComponentEventHandler(encoder_DistanceChanged);
         *
         *              // If you're interested in ticks, then use this:
         *              encoder.CountChangedThreshold = 10;  // 10 ticks;
         *              encoder.CountChanged += new
         *              HardwareComponentEventHandler(encoder_CountChanged);
         */

        private IWheelEncoder CreateWheelEncoder(IAbstractRobotHardware brick, WheelEncoderId id, int frequency, int threshold)
        {
            IWheelEncoder encoder = brick.produceWheelEncoder(id, frequency, 1, threshold);

            // Frequency  milliseconds
            // Resolution must be set to avoid divide by zero in WheelEncoder.cs
            // CountChangedThreshold ticks

            encoder.CountChanged += new HardwareComponentEventHandler(encoder_CountChanged);

            return(encoder);
        }
Esempio n. 2
0
        private void encoder_CountChanged(IHardwareComponent sender)
        {
            lock (currentSensorsDataLock)
            {
                SensorsDataPlucky sensorsData = new SensorsDataPlucky(this.currentSensorsData);

                IWheelEncoder encoder = sender as IWheelEncoder;

                Debug.Assert(encoder != null, "SensorsControllerPlucky: encoder_CountChanged(): Encoder must be non-null");

                if (encoder.WheelEncoderId == WheelEncoderId.Encoder2)
                {
                    sensorsData.WheelEncoderLeftTicks = encoder.Count;
                }
                else if (encoder.WheelEncoderId == WheelEncoderId.Encoder1)
                {
                    sensorsData.WheelEncoderRightTicks = encoder.Count;
                }

                //Debug.WriteLine(sensorsData.ToString());

                this.currentSensorsData = sensorsData;
            }
        }