コード例 #1
0
ファイル: Sejway.cs プロジェクト: dpiquee/EV3
 public Sejway()
 {
     //			ls = new LightSensor(SensorPort.S2, true);
     ev3 = new EV3Brick ();
 }
コード例 #2
0
        public Sejway()
        {
//			ls = new LightSensor(SensorPort.S2, true);
            ev3 = new EV3Brick();
        }
コード例 #3
0
        private void testController()
        {
            Console.WriteLine("Testing constoller ...");
            EV3Brick ev3 = new EV3Brick();

            ev3.connect();

            // current status: normalize
            int motorAdeg = (int)(ev3.getMotorADegree() / 50.0);
            int motorBdeg = (int)(ev3.getMotorBDegree() / 300.0);

            /*
             * training data = [
             *      [[0,0,0,1], [0,1]],		// down1
             *      [[0,1,1,1], [1,0]],		// pick
             *      [[1,1,1,0], [0,-1]],	// up1
             *      [[1,0,1,1], [0,1]],		// down2
             *      [[1,1,0,1], [-1,0]],	// drop
             *      [[0,1,0,0], [0,-1]]		// up2
             * ]
             */
            var argv = new List <int[]> ();

            // current (A, B), desired (A, B)
            // down1
            argv.Add(new [] { motorAdeg, motorBdeg, 0, 1 });
//			argv.Add (new []{0,0,0,1});
            argv.Add(new [] { 0, 1 });                  // targets A, B

            // up1
//			argv.Add (new []{1,1,1,0});
//			argv.Add (new []{motorAdeg,motorBdeg,1,0});
//			argv.Add (new []{0,-1});		// targets A, B

            var engine = Python.CreateEngine();
            var paths  = engine.GetSearchPaths();

            paths.Add(pythonPath);
            engine.SetSearchPaths(paths);
            engine.GetSysModule().SetVariable("argv", argv);

            var scriptRuntime = Python.CreateRuntime();

            scriptRuntime.GetSysModule().SetVariable("argv", argv);

            try
            {
                dynamic result = engine.ExecuteFile("script.py");
                Console.WriteLine(result.outputs);
                var outputs = result.outputs;
                foreach (double output in outputs)
                {
                    Console.WriteLine(output);
                }
                motorAdeg = (int)(outputs[0] * 50);
                motorBdeg = (int)(outputs[1] * 300);
                Console.WriteLine(motorAdeg + ", " + motorBdeg);
                ev3.moveMotorA(motorAdeg);
                ev3.moveMotorB(motorBdeg);
                Thread.Sleep(5000);
            }
            catch (Exception ex)
            {
                Console.WriteLine(
                    "Oops! We couldn't execute the script because of an exception: " + ex.Message);
            }

            ev3.disconnect();

            Console.WriteLine("Complete.");
            //			Console.ReadLine();
        }
コード例 #4
0
        static void Main(string[] args)
        {
            var ev3 = new EV3Brick <ColorSensor, UltrasonicSensor, TouchSensor, IRSensor>("usb");

            ev3.Connection.Open();
            ev3.Sensor1.Mode = ColorMode.Color;
            ev3.Sensor2.Mode = UltrasonicMode.Centimeter;
            ev3.Sensor3.Mode = TouchMode.Count;
            ev3.Sensor4.Mode = IRMode.Seek;
            ConsoleKeyInfo cki;

            Console.WriteLine("Press Q to quit");
            sbyte speed = 0;

            do
            {
                cki = Console.ReadKey(true);                 //press a key
                switch (cki.Key)
                {
                case ConsoleKey.D1:                        //1 was pressed
                    Console.WriteLine("S1: " + ev3.Sensor1.ReadAsString());
                    break;

                case ConsoleKey.D2:                        //2 was pressed
                    Console.WriteLine("S2: " + ev3.Sensor2.ReadAsString());
                    break;

                case ConsoleKey.D3:                        //3 was pressed
                    Console.WriteLine("S3: " + ev3.Sensor2.ReadAsString());
                    break;

                case ConsoleKey.D4:                        //4 was pressed
                    Console.WriteLine("S4: " + ev3.Sensor2.ReadAsString());
                    break;

                case ConsoleKey.UpArrow:
                    if (speed < 100)
                    {
                        speed = (sbyte)(speed + 10);
                    }
                    Console.WriteLine("Motor A speed set to " + speed);
                    ev3.MotorA.On(speed);
                    break;

                case ConsoleKey.DownArrow:
                    if (speed > -100)
                    {
                        speed = (sbyte)(speed - 10);
                    }
                    Console.WriteLine("Motor A speed set to " + speed);
                    ev3.MotorA.On(speed);
                    break;

                case ConsoleKey.S:
                    Console.WriteLine("Motor A off");
                    speed = 0;
                    ev3.MotorA.Off();
                    break;

                case ConsoleKey.B:
                    Console.WriteLine("Motor A break");
                    speed = 0;
                    ev3.MotorA.Brake();
                    break;

                case ConsoleKey.T:
                    int count = ev3.MotorA.GetTachoCount();
                    Console.WriteLine("Motor A tacho count:" + count);
                    break;

                case ConsoleKey.C:
                    Console.WriteLine("Clear tacho count");
                    ev3.MotorA.ResetTacho();
                    break;

                case ConsoleKey.M:
                    Console.WriteLine("Enter position to move to.");
                    string input = Console.ReadLine();
                    Int32  position;
                    if (Int32.TryParse(input, out position))
                    {
                        Console.WriteLine("Move to " + position);
                        ev3.MotorA.MoveTo(50, position);
                    }
                    else
                    {
                        Console.WriteLine("Enter a valid number");
                    }
                    break;
                }
            } while (cki.Key != ConsoleKey.Q);
        }
コード例 #5
0
ファイル: ev3.cs プロジェクト: dpiquee/EV3
        private void testController()
        {
            Console.WriteLine("Testing constoller ...");
            EV3Brick ev3 = new EV3Brick ();
            ev3.connect ();

            // current status: normalize
            int motorAdeg = (int) (ev3.getMotorADegree()/50.0);
            int motorBdeg = (int) (ev3.getMotorBDegree()/300.0);

            /*
            training data = [
                [[0,0,0,1], [0,1]],		// down1
                [[0,1,1,1], [1,0]],		// pick
                [[1,1,1,0], [0,-1]],	// up1
                [[1,0,1,1], [0,1]],		// down2
                [[1,1,0,1], [-1,0]],	// drop
                [[0,1,0,0], [0,-1]]		// up2
            ]
            */
            var argv = new List<int[]> ();
            // current (A, B), desired (A, B)
            // down1
            argv.Add (new []{motorAdeg,motorBdeg,0,1});
            //			argv.Add (new []{0,0,0,1});
            argv.Add (new []{0,1});		// targets A, B

            // up1
            //			argv.Add (new []{1,1,1,0});
            //			argv.Add (new []{motorAdeg,motorBdeg,1,0});
            //			argv.Add (new []{0,-1});		// targets A, B

            var engine = Python.CreateEngine();
            var paths = engine.GetSearchPaths();
            paths.Add(pythonPath);
            engine.SetSearchPaths(paths);
            engine.GetSysModule ().SetVariable ("argv", argv);

            var scriptRuntime = Python.CreateRuntime();
            scriptRuntime.GetSysModule().SetVariable("argv", argv);

            try
            {
                dynamic result = engine.ExecuteFile("script.py");
                Console.WriteLine(result.outputs);
                var outputs = result.outputs;
                foreach (double output in outputs) {
                    Console.WriteLine(output);
                }
                motorAdeg = (int) (outputs[0]*50);
                motorBdeg = (int) (outputs[1]*300);
                Console.WriteLine(motorAdeg + ", " + motorBdeg);
                ev3.moveMotorA(motorAdeg);
                ev3.moveMotorB(motorBdeg);
                Thread.Sleep(5000);
            }
            catch (Exception ex)
            {
                Console.WriteLine(
                    "Oops! We couldn't execute the script because of an exception: " + ex.Message);
            }

            ev3.disconnect ();

            Console.WriteLine("Complete.");
            //			Console.ReadLine();
        }
コード例 #6
0
		static void Main(string[] args)
        {
			
			var ev3 = new EV3Brick<ColorSensor,UltrasonicSensor,TouchSensor,IRSensor>("usb");
			ev3.Connection.Open();
			ev3.Sensor1.Mode = ColorMode.Color;
			ev3.Sensor2.Mode = UltrasonicMode.Centimeter;
			ev3.Sensor3.Mode = TouchMode.Count;
			ev3.Sensor4.Mode = IRMode.Seek;
			ConsoleKeyInfo cki;
			Console.WriteLine("Press Q to quit");
			sbyte speed = 0;
			do 
			{
				cki = Console.ReadKey(true); //press a key
				switch(cki.Key){
					case ConsoleKey.D1://1 was pressed
						Console.WriteLine("S1: " + ev3.Sensor1.ReadAsString());
					break;
					case ConsoleKey.D2://2 was pressed
						Console.WriteLine("S2: " + ev3.Sensor2.ReadAsString());
					break;
					case ConsoleKey.D3://3 was pressed
						Console.WriteLine("S3: " + ev3.Sensor2.ReadAsString());
					break;
					case ConsoleKey.D4://4 was pressed
						Console.WriteLine("S4: " + ev3.Sensor2.ReadAsString());
					break;
					case ConsoleKey.UpArrow:     
                        if(speed < 100)    
                            speed = (sbyte)(speed + 10);    
                        Console.WriteLine("Motor A speed set to " + speed);    
                        ev3.MotorA.On(speed);    
                    break;    
                    case ConsoleKey.DownArrow:     
                        if(speed > -100)    
                            speed = (sbyte)(speed - 10);    
                        Console.WriteLine("Motor A speed set to " + speed);    
                        ev3.MotorA.On(speed);    
                    break;    
                    case ConsoleKey.S:     
                        Console.WriteLine("Motor A off");    
                        speed = 0;    
                        ev3.MotorA.Off();    
                    break;    
                    case ConsoleKey.B:    
                        Console.WriteLine("Motor A break");    
                        speed = 0;    
                        ev3.MotorA.Brake();    
                    break;  
                     case ConsoleKey.T:    
                        int count = ev3.MotorA.GetTachoCount();  
                        Console.WriteLine("Motor A tacho count:" +count);    
                    break;  
                    case ConsoleKey.C:    
                        Console.WriteLine("Clear tacho count");    
                        ev3.MotorA.ResetTacho();  
                    break;  
                    case ConsoleKey.M:  
                        Console.WriteLine("Enter position to move to.");  
                        string input = Console.ReadLine();  
                        Int32 position;  
                        if(Int32.TryParse(input, out position)){  
                            Console.WriteLine("Move to " + position);  
                            ev3.MotorA.MoveTo(50, position);  
                        }  
                        else{  
                            Console.WriteLine("Enter a valid number");  
                        }  
                    break;
				}
			} while (cki.Key != ConsoleKey.Q);
        }