public static void Measurement() { // execute all actions of this state LCD.drawString("Measurement", 0, 3); btThread.popElement(); Sound.beep(); Sound.beep(); // lower sensor by RCX motor tempMotor.setPower(-100); tempMotor.setPower(0); for (int i = 0; i < nrcolors; i++) { if (colorsens.getColorID() == lakes[i].color && !lakes[i].found) // kleuren komen overeen lakes[i].celsius = tempSensor.getCelcius(); lakes[i].found = true; return; } // raise temp sensor tempMotor.setPower(100); btThread.write(500); // sends the message 'action done' // leg de huidige tijd vast voor alle transitions met een timeoutcondition long starttime = System.currentTimeMillis(); // when done, wait for a trigger for a transition boolean transitionTaken = false; while (!transitionTaken) { if ((lakes[0].found && lakes[1].found && lakes[2].found)) { current = State.FINISHED; transitionTaken = true; } else if ((true)) { current = State.WATCH; transitionTaken = true; } } }
// The recognize() method returns true if the object is a blue block public boolean recognize() { // Boolean that determines whether or not to start detecting what kind of object is in front boolean isRecognizing = true; while (isRecognizing) { // The robot will drive slowly if the light reads under 300, which means an object is closeby while (color.getNormalizedLightValue() < 300) { robot.setForwardSpeed(2); } // When the robot is close enough to the object, it will stop then turn on its // blue light which gives two noticeable different light values for a wooden and blue // block robot.setForwardSpeed(0); color.setFloodlight(Color.BLUE); // If the light value of blue reads over 250, it is a blue block if (color.getNormalizedLightValue() >= 250) { Sound.beep(); LCD.drawString("Blue styrofoam block", 3, 5); // Turn the default light back on after analyzing an object color.setFloodlight(true); return true; } else { // If it is not a blue block, it is a wooden block Sound.buzz(); LCD.drawString("Wooden block", 3, 5); // Turn the default light back on after analyzing an object color.setFloodlight(true); } // Set the boolean to false to break out of the while loop and stop analyzing the object isRecognizing = false; } // Default return value. It should never get here but JAVA requires a return type return false; }
public static void Watch() { // execute all actions of this state LCD.drawString("Watch", 0, 3); // leg de huidige tijd vast voor alle transitions met een timeoutcondition long starttime = System.currentTimeMillis(); // when done, wait for a trigger for a transition boolean transitionTaken = false; while (!transitionTaken) { if ((sonar.getDistance() <= 10)) { current = State.SONARFLAG; transitionTaken = true; } else if ((lejos.robotics.Color.RED == colorsens.getColorID()) || (lejos.robotics.Color.BLUE == colorsens.getColorID()) || (lejos.robotics.Color.GREEN == colorsens.getColorID())) { current = State.COLORFLAG; transitionTaken = true; } } }
public ObjectRecognition(UltrasonicSensor sensor, ColorSensor colorSensor, TwoWheeledRobot robo) { // The constructor for objectRecognitino object will take an ultrasonic sensor, color sensor, // and a robot type ultrasonic = sensor; color = colorSensor; robot = robo; // The color of the light sensor will be set to red until an object is sensed // (value > 280) then it will be turned to blue color.setFloodlight(true); }