public static void Main(string[] args) { EventWaitHandle stopped = new ManualResetEvent(false); ColorMode[] modes = { ColorMode.Color, ColorMode.Reflection, ColorMode.Ambient, ColorMode.Blue }; int modeIdx = 0; var sensor = new EV3ColorSensor(SensorPort.In1); ButtonEvents buts = new ButtonEvents(); LcdConsole.WriteLine("Use color on port1"); LcdConsole.WriteLine("Up read value"); LcdConsole.WriteLine("Down raw value"); LcdConsole.WriteLine("Enter change mode"); LcdConsole.WriteLine("Esc. terminate"); buts.EscapePressed += () => { stopped.Set(); }; buts.UpPressed += () => { LcdConsole.WriteLine("Sensor value: " + sensor.ReadAsString()); }; buts.DownPressed += () => { LcdConsole.WriteLine("Raw sensor value: " + sensor.ReadRaw()); }; buts.EnterPressed += () => { modeIdx = (modeIdx + 1) % modes.Length; sensor.Mode = modes[modeIdx]; LcdConsole.WriteLine("Sensor mode is set to: " + modes[modeIdx]); }; stopped.WaitOne(); }
static void DriveToColor(sbyte speed, string Color, Motor motorR, Motor motorL, EV3ColorSensor sensor) { int i = 0; LcdConsole.WriteLine("zoeken naar" + sensor.ReadAsString() + "en " + Color); Thread.Sleep(1000); motorL.SetSpeed(speed); motorR.SetSpeed(speed); while (Color != sensor.ReadAsString()) { LcdConsole.WriteLine("Sensor ẁaarde:" + sensor.ReadAsString()); if (Color == (sensor.ReadAsString())) { LcdConsole.WriteLine("Sensor ẁaarde:" + sensor.ReadAsString()); LcdConsole.WriteLine("GEVONDEN " + sensor.ReadAsString()); motorR.Off(); motorL.Off(); break; } Thread.Sleep(50); // wacht voor zoveel miliseconde voor de volgende loop i++; if (i > 60) // als 5000 miliseconden voorbij zijn stop { LcdConsole.WriteLine("heeft de kleur niet kunnen vinden"); motorR.Off(); motorL.Off(); break; } } }
private async Task TestEV3Color() { //brick.Stop(); //brick.SetTimeout(250); EV3ColorSensor nxtlight = new EV3ColorSensor(BrickPortSensor.PORT_S4, ColorSensorMode.Reflection); EV3TouchSensor touch = new EV3TouchSensor(BrickPortSensor.PORT_S1); //brick.Stop(); //brick.SetupSensors(); RGBColor rgb; await Task.Delay(5000); for (int i = 0; i < nxtlight.NumberOfModes(); i++) { int count = 0; while ((count < 100) && !touch.IsPressed()) { //Debug.WriteLine(string.Format("NXT Touch, Raw: {0}, ReadASString: {1}, IsPressed: {2}, NumberNodes: {3}, SensorName: {4}", touch.ReadRaw(), touch.ReadAsString(), touch.IsPressed(), touch.NumberOfModes(), touch.GetSensorName())); //Debug.WriteLine(string.Format("EV3 Touch, Raw: {0}, ReadASString: {1}, IsPressed: {2}, NumberNodes: {3}, SensorName: {4}", ev3Touch.ReadRaw(), ev3Touch.ReadAsString(), ev3Touch.IsPressed(), ev3Touch.NumberOfModes(), ev3Touch.GetSensorName())); //Debug.WriteLine(string.Format("NXT Sound, Raw: {0}, ReadASString: {1}, NumberNodes: {2}, SensorName: {3}", sound.ReadRaw(), sound.ReadAsString(), sound.NumberOfModes(), sound.GetSensorName())); //brick.UpdateValues(); Debug.WriteLine(string.Format("EV3 Color Sensor, Raw: {0}, ReadASString: {1}", nxtlight.ReadRaw(), nxtlight.ReadAsString())); rgb = nxtlight.ReadRGBColor(); Debug.WriteLine(string.Format("Color: {0}, Red: {1}, Green: {2}, Blue: {3}", nxtlight.ReadColor(), rgb.Red, rgb.Green, rgb.Blue)); //brick.Stop(); //brick.Start(); //nxtlight.ColorMode = ColorSensorMode.Ambient; await Task.Delay(1000); //if ((touch.IsPressed()) && ev3Touch.IsPressed()) count++; //nxtlight.ColorMode = ColorSensorMode.Color; } if (nxtlight.ColorMode == ColorSensorMode.Reflection) { nxtlight.ColorMode = ColorSensorMode.Color; } else { nxtlight.ColorMode = ColorSensorMode.Reflection; } //brick.SetupSensors(); await Task.Delay(5000); } }
private static void TestEV3Color() { Console.WriteLine("EV3 sensor color test mode"); EV3ColorSensor nxtlight = new EV3ColorSensor(_brick, SensorPort.Port2, ColorSensorMode.Green); EV3TouchSensor touch = new EV3TouchSensor(_brick, SensorPort.Port1); RGBColor rgb; Thread.Sleep(5000); for (int i = 0; i < nxtlight.NumberOfModes(); i++) { int count = 0; while ((count < 100) && !touch.IsPressed()) { Console.WriteLine($"EV3 Color Sensor, Raw: {nxtlight.ReadRaw()}, ReadASString: {nxtlight.ReadAsString()}"); rgb = nxtlight.ReadRGBColor(); Console.WriteLine($"Color: {nxtlight.ReadColor()}, Red: {rgb.Red}, Green: {rgb.Green}, Blue: {rgb.Blue}"); Thread.Sleep(1000); count++; } nxtlight.SelectNextMode(); Thread.Sleep(5000); } }
public static void Main(string[] args) { //AutoFin->false ManualResetEvent terminateProgram = new ManualResetEvent(false); //Motor_Rady LcdConsole.WriteLine("***Motor_Rady***"); Motor motorA = new Motor(MotorPort.OutA); Motor motorD = new Motor(MotorPort.OutD); motorA.Off(); motorD.Off(); motorA.ResetTacho(); motorD.ResetTacho(); //Vehicle_Rady Vehicle vehicle = new Vehicle(MotorPort.OutA, MotorPort.OutD); WaitHandle waitHandle; vehicle.ReverseLeft = false; vehicle.ReverseRight = false; int b = 0; //Sensor_Rady LcdConsole.WriteLine("***Sensor_Rady***"); //Touch_Rady var touchSensor1 = new EV3TouchSensor(SensorPort.In1); var touchSensor2 = new EV3TouchSensor(SensorPort.In4); //UltraSonic_Rady var UltraSonicSensor = new EV3UltrasonicSensor(SensorPort.In3, UltraSonicMode.Centimeter); //Color_Rady EventWaitHandle stopped = new ManualResetEvent(false); ColorMode[] modes = { ColorMode.Color, ColorMode.Reflection, ColorMode.Ambient, ColorMode.Blue }; int modeIdx = 0; var sensor = new EV3ColorSensor(SensorPort.In2, ColorMode.Reflection); //Conection LcdConsole.WriteLine("***Conect_Rady***"); //Http Encoding enc = Encoding.UTF8; string input = "Detect"; string url = "http://nursinghomeexplorer.azurewebsites.net/index.php"; string param = ""; // Hashtable ht = new Hashtable(); ht["langpair"] = "#ja"; ht["hl"] = "en"; ht["text"] = HttpUtility.UrlEncode(input, enc); foreach (string k in ht.Keys) { param += String.Format("{0}={1}&", k, ht[k]); } byte[] data = Encoding.ASCII.GetBytes(param); // HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.ContentLength = data.Length; LcdConsole.WriteLine("***Conected!***"); //timer set System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); long a = 0; //buts ButtonEvents buts = new ButtonEvents(); LcdConsole.WriteLine("Up read BrightLine"); LcdConsole.WriteLine("Down read Floor"); //LcdConsole.WriteLine ("Left Exit program"); //LcdConsole.WriteLine ("Right Exit program"); LcdConsole.WriteLine("Enter change color mode"); LcdConsole.WriteLine("Esc. StartRun"); buts.UpPressed += () => { LcdConsole.WriteLine("Sensor value: " + sensor.ReadAsString()); }; buts.DownPressed += () => { LcdConsole.WriteLine("Raw sensor value: " + sensor.ReadRaw()); }; buts.EnterPressed += () => { modeIdx = (modeIdx + 1) % modes.Length; sensor.Mode = modes[modeIdx]; LcdConsole.WriteLine("Sensor mode is set to: " + modes[modeIdx]); }; //Left_Finish buts.LeftPressed += () => { terminateProgram.Set(); }; //Escape_StartRun buts.EscapePressed += () => { LcdConsole.WriteLine("***StartRun***"); stopped.Set(); //loop_run on the line while (true) { //touchsensor2 Pressed if (touchSensor2.IsPressed() == true) { //motors stop motorA.Brake(); motorD.Brake(); LcdConsole.WriteLine("***Stop***"); //timer start sw.Start(); //after 5sec Thread.Sleep(5000); a = sw.ElapsedMilliseconds; LcdConsole.WriteLine("***Stop_5sec***"); if (a >= 5000) { //timer stop a = 0; sw.Stop(); sw.Reset(); if (touchSensor2.IsPressed() == true) { LcdConsole.WriteLine("***Stop_ISPressed2***"); // Stream reqStream = req.GetRequestStream(); LcdConsole.WriteLine("***Stop_GetReqStream***"); reqStream.Write(data, 0, data.Length); LcdConsole.WriteLine("***Stop_write***"); reqStream.Close(); LcdConsole.WriteLine("***Stop_reqStream.close***"); break; } if (touchSensor1.IsPressed() == true) { // Stream reqStream = req.GetRequestStream(); reqStream.Write(data, 0, data.Length); reqStream.Close(); break; } } else { continue; } } //touchsensor1 pressed if (touchSensor1.IsPressed() == true) { motorA.Brake(); motorD.Brake(); LcdConsole.WriteLine("***Stop***"); //timer start sw.Start(); //after 5sec Thread.Sleep(5000); a = sw.ElapsedMilliseconds; if (a >= 5000) { //timer stop a = 0; sw.Stop(); sw.Reset(); if (touchSensor1.IsPressed() == true) { // Stream reqStream = req.GetRequestStream(); reqStream.Write(data, 0, data.Length); reqStream.Close(); break; } if (touchSensor2.IsPressed() == true) { // Stream reqStream = req.GetRequestStream(); reqStream.Write(data, 0, data.Length); reqStream.Close(); break; } } else { continue; } } //Ultrasonic on if (UltraSonicSensor.Read() <= 30) { motorA.Brake(); motorD.Brake(); LcdConsole.WriteLine("***Stop***"); //timer start sw.Start(); //after 5sec Thread.Sleep(5000); a = sw.ElapsedMilliseconds; if (a >= 5000) { //timer stop a = 0; sw.Stop(); sw.Reset(); if (UltraSonicSensor.Read() <= 30) { // Stream reqStream = req.GetRequestStream(); reqStream.Write(data, 0, data.Length); reqStream.Close(); break; } } else { continue; } } b = sensor.Read(); if (b < 15) { vehicle.TurnRightForward(10, 100); } if (15 <= b && b < 60) { vehicle.TurnLeftForward(10, 60); } if (b >= 60) { waitHandle = vehicle.Forward(10, 0, true); } } }; terminateProgram.WaitOne(); buts.LeftPressed += () => { terminateProgram.Set(); }; }