// 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 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); }