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; }
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(); }
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); }
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); } }
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 }
public Mission1Failed() { _vehicle = new Vehicle(Constants.MOTOR_LEFT_PORT, Constants.MOTOR_RIGHT_PORT); _gyro = new EV3GyroSensor(Constants.GYRO_PORT); }