Пример #1
0
        public virtual void Sit()
        {
            //TODO: Make the right moves
            MotorSync m = new MotorSync(MotorPort.OutA, MotorPort.OutD);

            m.TimeSync(99, 0, 700, true);
        }
Пример #2
0
        public static void Main(string[] args)
        {
            ButtonEvents buts = new ButtonEvents();
            bool         run  = true;

            buts.EscapePressed += () =>
            {
                run = false;
            };

            MotorSync   motori = new MotorSync(MotorPort.OutB, MotorPort.OutD);
            EV3IRSensor ir     = new EV3IRSensor(SensorPort.In3, IRMode.Proximity);

            Thread bg = new Thread(Scan);

            bg.Start();
            while (run && ir.Read() > 80)
            {
                LcdConsole.WriteLine(ir.Read().ToString());
                Thread.Sleep(200);
            }
            bg.Abort();
            motori.Brake();
            motori.Off();
        }
Пример #3
0
        public virtual void Stay()
        {
            Motor m = new Motor(MotorPort.OutC);

            m.SpeedProfileTime(-30, 70, 4000, 70, true);
            System.Threading.Thread.Sleep(4000);
            //TODO: Make the right moves
            MotorSync ms = new MotorSync(MotorPort.OutA, MotorPort.OutD);

            ms.TimeSync(-99, 0, 1000, true);
        }
Пример #4
0
        private void Move(sbyte speed, uint steps)
        {
            var motorSync = new MotorSync(Constants.MOTOR_LEFT_PORT, Constants.MOTOR_RIGHT_PORT);

            WaitHandle waitHandle = motorSync.StepSync(speed, 0, steps, true);

            waitHandle.WaitOne();

            motorSync.Off();

            Thread.Sleep(100);
        }
Пример #5
0
        public static void Main(string[] args)
        {
            Buttons   btns      = new Buttons();
            Motor     motor     = new Motor(MotorPort.OutA);
            MotorSync motorSync = new MotorSync(MotorPort.OutA, MotorPort.OutD);

            LcdConsole.WriteLine("Use Motor on A");
            LcdConsole.WriteLine("Use Motor on D");
            LcdConsole.WriteLine("Press Ent. to start");
            btns.GetKeypress();
            motor.ResetTacho();
            LcdConsole.WriteLine("Running forward with 20");
            motor.On(20);
            System.Threading.Thread.Sleep(2500);
            LcdConsole.WriteLine("Printing motor speed: " + motor.GetSpeed());
            System.Threading.Thread.Sleep(2500);
            LcdConsole.WriteLine("Running backwards with 70");
            motor.On(-70);
            System.Threading.Thread.Sleep(3000);
            LcdConsole.WriteLine("Reverse direction");
            motor.Reverse = true;
            System.Threading.Thread.Sleep(3000);
            LcdConsole.WriteLine("Brake");
            motor.Reverse = false;
            motor.Brake();
            System.Threading.Thread.Sleep(3000);
            LcdConsole.WriteLine("Off");
            motor.Off();
            System.Threading.Thread.Sleep(3000);

            LcdConsole.WriteLine("Move to zero");
            motor.MoveTo(40, 0, true);
            LcdConsole.WriteLine("Motor at position: " + motor.GetTachoCount());
            System.Threading.Thread.Sleep(2000);

            LcdConsole.WriteLine("Creating a step profile");
            motor.SpeedProfileStep(40, 100, 1500, 100, true);
            motor.Off();
            LcdConsole.WriteLine("Motor at position: " + motor.GetTachoCount());
            System.Threading.Thread.Sleep(2000);

            LcdConsole.WriteLine("Motor " + motorSync.BitField + " synchronised forward for 2500 steps");
            motorSync.On(50, 0, 2500, true);
            motorSync.Off();
            LcdConsole.WriteLine("Motor " + motorSync.BitField + " synchronised with second motor moving at half speed");
            motorSync.On(-20, 50, 2500, false);           //coast when done



            LcdConsole.WriteLine("Done executing motor test");
        }
Пример #6
0
        public static void Scan()
        {
            MotorSync  m = new MotorSync(MotorPort.OutB, MotorPort.OutD);
            WaitHandle wh;

            while (true)
            {
                wh = m.StepSync(50, -200, 300, true);
                wh.WaitOne();
                wh = m.StepSync(50, 200, 600, true);
                wh.WaitOne();
                wh = m.StepSync(50, -200, 300, true);
                wh.WaitOne();
                wh = m.StepSync(100, 0, 500, true);
                wh.WaitOne();
            }
        }
Пример #7
0
 public Movement()
 {
     Log.Debug("Movement init started");
     sync = new MotorSync(MotorPort.OutA, MotorPort.OutD);
     this.Brake();
 }
Пример #8
0
        public static void Main(string[] args)
        {
            Motor      motorA = new Motor(MotorPort.OutA);
            Motor      motorD = new Motor(MotorPort.OutD);
            WaitHandle motorWaitHandle;

            motorA.Off();
            motorD.Off();

            //Power control
            LcdConsole.WriteLine("Set power to 50");
            motorA.SetPower(50);
            Thread.Sleep(3000);
            LcdConsole.WriteLine("Break");
            motorA.Brake();

            //Speed control
            LcdConsole.WriteLine("Set speed to 50");
            motorA.SetSpeed(50);
            Thread.Sleep(1000);
            LcdConsole.WriteLine("Speed: " + motorA.GetSpeed());
            Thread.Sleep(2000);
            LcdConsole.WriteLine("Break");
            motorA.Brake();

            //Position control of single motor
            Thread.Sleep(3000);
            motorA.ResetTacho();
            LcdConsole.WriteLine("Moving motor A to 2000 ");
            motorWaitHandle = motorA.SpeedProfile(50, 200, 1600, 200, true);
            //you could do something else here
            LcdConsole.WriteLine("Waiting for motor A to stop");
            motorWaitHandle.WaitOne();
            LcdConsole.WriteLine("Done moving motor");
            LcdConsole.WriteLine("Position A: " + motorA.GetTachoCount());

            //Individual position control of both motors
            Thread.Sleep(3000);
            motorA.ResetTacho();
            motorD.ResetTacho();
            LcdConsole.WriteLine("Moving motors A to 2000");
            LcdConsole.WriteLine("Moving motor B to 1000");
            WaitHandle[] handles = new WaitHandle[2];
            handles[0] = motorA.SpeedProfile(50, 200, 1600, 200, true);
            handles[1] = motorD.SpeedProfile(50, 200, 600, 200, true);
            //you could do something else here
            LcdConsole.WriteLine("Waiting for both motors to stop");
            WaitHandle.WaitAll(handles);
            LcdConsole.WriteLine("Done moving both motors");
            LcdConsole.WriteLine("Position A: " + motorA.GetTachoCount());
            LcdConsole.WriteLine("Position D: " + motorD.GetTachoCount());
            motorA.Off();
            motorD.Off();

            //Motor synchronisation position control
            Thread.Sleep(3000);
            motorA.ResetTacho();
            motorD.ResetTacho();
            MotorSync sync = new MotorSync(MotorPort.OutA, MotorPort.OutD);

            LcdConsole.WriteLine("Sync motors to move 3000 steps forward");
            motorWaitHandle = sync.StepSync(40, 0, 3000, true);
            //you could do something else here
            LcdConsole.WriteLine("Waiting for sync to stop");
            motorWaitHandle.WaitOne();
            LcdConsole.WriteLine("Done sync moving both motors");
            LcdConsole.WriteLine("Position A: " + motorA.GetTachoCount());
            LcdConsole.WriteLine("Position D: " + motorD.GetTachoCount());
            sync.Off();
        }