コード例 #1
0
ファイル: Program.cs プロジェクト: stefanvt1981/BrickPiTest
        public async Task Setup()
        {
            // Set brick
            _brick = new Brick();

            // Set Smacker ;)
            _smackMotor = new Motor(_brick, Iot.Device.BrickPi3.Models.BrickPortMotor.PortB);
            //_smackMotor.PropertyChanged += HandleTachoPropertyChangedEvent;

            // Set ultrasonic
            _sonic = new EV3UltraSonicSensor(_brick, SensorPort.Port1, UltraSonicMode.Centimeter);
            _sonic.PropertyChanged += HandleSonicSmackPropertyChangedEvent;

            // Set movement motors
            _leftMotor  = new Motor(_brick, Iot.Device.BrickPi3.Models.BrickPortMotor.PortC);
            _rightMotor = new Motor(_brick, Iot.Device.BrickPi3.Models.BrickPortMotor.PortD);

            // Gyro
            _gyro      = new EV3GyroSensor(_brick, SensorPort.Port3);
            _gyro.Mode = GyroMode.Angle;
            //_gyro.PropertyChanged += HandleGyroMovementPropertyChangedEvent;

            // Color
            _color = new EV3ColorSensor(_brick, SensorPort.Port2, ColorSensorMode.Color, 20);
            _color.PropertyChanged += HandleMovementColorPropertyChangedEvent;

            // Touch
            _touch = new EV3TouchSensor(_brick, SensorPort.Port4, 20);
            _touch.PropertyChanged += HandleHit;
        }
コード例 #2
0
        public static void Main(string[] args)
        {
            ManualResetEvent terminateProgram = new ManualResetEvent(false);

            GyroMode[]   modes   = { GyroMode.Angle, GyroMode.AngularVelocity };
            int          modeIdx = 0;
            ButtonEvents buts    = new ButtonEvents();
            var          gyro    = new EV3GyroSensor(SensorPort.In2, GyroMode.Angle);

            LcdConsole.WriteLine("Use gyro on port 1");
            LcdConsole.WriteLine("Up read value");
            LcdConsole.WriteLine("Down rotation count");
            LcdConsole.WriteLine("Left reset");
            LcdConsole.WriteLine("Enter change mode");
            LcdConsole.WriteLine("Esc. terminate");
            buts.EscapePressed += () => {
                terminateProgram.Set();
            };
            buts.UpPressed += () => {
                LcdConsole.WriteLine("Gyro sensor: " + gyro.ReadAsString());
            };
            buts.EnterPressed += () => {
                modeIdx   = (modeIdx + 1) % modes.Length;
                gyro.Mode = modes[modeIdx];
                LcdConsole.WriteLine("Mode: " + modes[modeIdx]);
            };
            buts.DownPressed += () => {
                LcdConsole.WriteLine("Rotation count: " + gyro.RotationCount());
            };
            buts.LeftPressed += () => {
                LcdConsole.WriteLine("Reset");
                gyro.Reset();
            };
            terminateProgram.WaitOne();
        }
コード例 #3
0
        static void Turning(EV3GyroSensor gyroSensor, int draaiGraden, Motor motorL, Motor motorR)
        {
            gyroSensor.Reset();
            sbyte draaiSnelheid    = 20;
            sbyte minDraaiSnelheid = -20;

            int graden     = 0;
            int counter    = 0;
            int updateTime = 8;

            if (draaiGraden > 0)                                                                                                                                                        //als hij naar rechts moet draaien dus een positief getal is
            {
                LcdConsole.WriteLine("GROTER ALS 0 ", draaiGraden);
                motorL.SetSpeed(draaiSnelheid);
                motorR.SetSpeed(minDraaiSnelheid);
                while (graden <= draaiGraden)                                                                                                                                   //terwijl het aantal graden dat hij gedraaid is kleiner is dan het aantal graden dat hij moet draaien
                {
                    LcdConsole.WriteLine("Gyro sensor: " + gyroSensor.ReadAsString());
                    graden = gyroSensor.Read();
                    Thread.Sleep(updateTime);
                    counter++;
                    if (counter > 500)
                    {
                        break;
                    }
                }
            }
            if (draaiGraden < 0)                                                                                                                                                    //als hij naar links moet draaien dus het aantal graden negatief is
            {
                LcdConsole.WriteLine("KLEINER ALS 0 ", draaiGraden);
                motorL.SetSpeed(minDraaiSnelheid);
                motorR.SetSpeed(draaiSnelheid);
                while (graden >= draaiGraden)                                                                                                                                   //terwijl het aantal graden dat hij gedraaid is groter is dan het aantal graden dat hij moet draaien
                {
                    LcdConsole.WriteLine("Gyro sensor: " + gyroSensor.ReadAsString());
                    graden = gyroSensor.Read();
                    Thread.Sleep(updateTime);
                    counter++;
                    if (counter > 500)
                    {
                        break;
                    }
                }
            }
            else
            {
                LcdConsole.WriteLine("IK KAN GEEN 0 GRADEN DRAAIEN " + gyroSensor.ReadAsString());
            }
            motorR.Brake();
            motorL.Brake();
            motorR.Off();
            motorL.Off();
            Thread.Sleep(1000);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: stefanvt1981/BrickPiTest
        public async Task TestGiroSensor()
        {
            EV3GyroSensor gyro = new EV3GyroSensor(_brick, SensorPort.Port3);

            gyro.Mode             = GyroMode.Angle;
            gyro.PropertyChanged += HandleGiroPropertyChangedEvent;


            while (false)
            {
                var deg = gyro.ReadRaw();

                Console.WriteLine($"{deg}");

                await Task.Delay(500);
            }
        }
コード例 #5
0
        public static void Main(string[] args)
        {
            InfoDialog dialog = new InfoDialog("Misie 2 + 3");                                                                          //print iets op het lcd scherm van de brick

            dialog.Show();                                                                                                              //wacht todat op ok is gedrukt



            Motor          motorR     = new Motor(MotorPort.OutB);                                                              //definieeren van de rechtermotor
            Motor          motorL     = new Motor(MotorPort.OutA);                                                              //definieeren van de linkermotor
            Motor          motorU     = new Motor(MotorPort.OutC);                                                              //definieeren van de robot arm motor
            EV3ColorSensor sensor     = new EV3ColorSensor(SensorPort.In4);                                                     //definieeren van de kleurensensor
            EV3GyroSensor  gyroSensor = new EV3GyroSensor(SensorPort.In2, GyroMode.Angle);                                      //definieeren van de gyrosensor



            //ga er vanuit dat deze functies namen logisch genoeg zijn en geen comments nodig hebben
            DriveStraight(4000, 30, motorR, motorL);
            DriveToColor(25, "White", motorR, motorL, sensor);
            Turning(gyroSensor, -86, motorL, motorR);
            DriveStraight(2500, 30, motorR, motorL);
            Turning(gyroSensor, -86, motorL, motorR);
            DriveStraight(2000, 25, motorR, motorL);
            ArmUp(1500, -20, motorU);
            DriveStraight(100, -25, motorR, motorL);
            ArmUp(600, -20, motorU);
            DriveStraight(2000, -25, motorR, motorL);
            Thread.Sleep(2000);
            ArmUp(200, 20, motorU);
            DriveStraight(700, 25, motorR, motorL);
            DriveStraight(700, -25, motorR, motorL);
            Turning(gyroSensor, 86, motorL, motorR);
            DriveStraight(2170, 30, motorL, motorR);
            Turning(gyroSensor, -90, motorL, motorR);
            DriveStraight(5500, 45, motorL, motorR);
            Turning(gyroSensor, -82, motorL, motorR);
            DriveStraight(6000, 30, motorL, motorR);

            LcdConsole.WriteLine("shutdown");
            Shutdown(motorL, motorR);                                                                                                                                           //afsluiten van het programma
        }
コード例 #6
0
 public Mission1Failed()
 {
     _vehicle = new Vehicle(Constants.MOTOR_LEFT_PORT, Constants.MOTOR_RIGHT_PORT);
     _gyro    = new EV3GyroSensor(Constants.GYRO_PORT);
 }