Ejemplo n.º 1
0
        public DcMotor(MotorHeaders header)
        {
            switch (header)
            {
            case MotorHeaders.M3:
                _motorBitA = (int)MotorBits.Motor3A;
                _motorBitB = (int)MotorBits.Motor3B;
                _pwm       = new PWM(MotorShield.Pwm_0B);
                break;

            case MotorHeaders.M4:
                _motorBitA = (int)MotorBits.Motor4A;
                _motorBitB = (int)MotorBits.Motor4B;
                _pwm       = new PWM(MotorShield.Pwm_0A);
                break;

            default:
                throw new InvalidOperationException("Invalid motor header specified.");
            }

            MotorShield.Instance.LatchState &= (byte)(~(1 << _motorBitA) & ~(1 << _motorBitB));
            MotorShield.Instance.LatchTx();

            _pwm.SetPulse(100, 0);
        }
Ejemplo n.º 2
0
        public DcMotor(MotorHeaders header)
        {
            switch (header)
            {
                case MotorHeaders.M3:
                    _motorBitA = (int)MotorBits.Motor3A;
                    _motorBitB = (int)MotorBits.Motor3B;
                    _pwm = new PWM(MotorShield.Pwm_0B);
                    break;
                case MotorHeaders.M4:
                    _motorBitA = (int)MotorBits.Motor4A;
                    _motorBitB = (int)MotorBits.Motor4B;
                    _pwm = new PWM(MotorShield.Pwm_0A);
                    break;
                default:
                    throw new InvalidOperationException("Invalid motor header specified.");
            }

            MotorShield.Instance.LatchState &= (byte)(~(1 << _motorBitA) & ~(1 << _motorBitB));
            MotorShield.Instance.LatchTx();

            _pwm.SetPulse(100, 0);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// A DC Motor controller
        /// </summary>
        /// <param name="header">The header to which the motor is connected</param>
        /// <param name="frequency">The PWM frequency (in Hz) at which to drive the motor. Defaults to 10kHz.</param>
        public DCMotor(MotorHeaders header, uint frequency = 10000)
        {
            switch (header)
            {
            /*
             * case MotorHeaders.M1:
             *  motorBitA = (int)MotorBits.Motor1_A;
             *  motorBitB = (int)MotorBits.Motor1_B;
             *  pwm = new PWM(PwmPins.pwm2A);
             *  break;
             * case MotorHeaders.M2:
             *  motorBitA = (int)MotorBits.Motor2_A;
             *  motorBitB = (int)MotorBits.Motor2_B;
             *  pwm = new PWM(PwmPins.pwm2B);
             *  break;
             */
            case MotorHeaders.M3:
                motorBitA = (int)MotorBits.Motor3_A;
                motorBitB = (int)MotorBits.Motor3_B;
                pwm       = new PWM(PwmPins.pwm0B);
                break;

            case MotorHeaders.M4:
                motorBitA = (int)MotorBits.Motor4_A;
                motorBitB = (int)MotorBits.Motor4_B;
                pwm       = new PWM(PwmPins.pwm0A);
                break;

            default:
                throw new InvalidOperationException("Invalid motor header specified");
            }

            latchState &= (byte)(~(1 << motorBitA) & ~(1 << motorBitB));
            latch_tx(latchState);                 // Set both motor pins low

            pwm.SetPulse(1000000 / frequency, 0); // Set PWM frequency, but 0% duty cycle
        }