Alarm Clock Robot
An Experiment in Autonomous Morning Routines.
package Code;
import edu.cmu.ri.createlab.terk.robot.finch.Finch;
import java.util.Random;
public class RunAway {
public static void main(final String[] args) {
Finch myFinch = new Finch();
Random rand = new Random();
boolean isLeftLightSensor;
boolean isRightLightSensor;
boolean isObstacle;
// Get initial light sensor values
isLeftLightSensor = myFinch.getLeftLightSensor() > 50; // adjust threshold as needed
isRightLightSensor = myFinch.getRightLightSensor() > 50;
while (isLeftLightSensor || isRightLightSensor) {
isObstacle = myFinch.isObstacle(); // assumes any obstacle is present
if (isObstacle) {
// Turn left, then move forward
myFinch.setWheelVelocities(0, 50, 500);
myFinch.setWheelVelocities(50, 50, 500);
} else {
int random = rand.nextInt(6) + 1; // Generates number 1–6
if (random == 1) {
myFinch.setWheelVelocities(50, 0, 200);
myFinch.setWheelVelocities(50, 50, 500);
} else if (random == 2) {
myFinch.setWheelVelocities(0, 50, 200);
myFinch.setWheelVelocities(50, 50, 700);
} else if (random == 3) {
myFinch.setWheelVelocities(50, 0, 200);
myFinch.setWheelVelocities(50, 50, 600);
} else if (random == 4) {
myFinch.setWheelVelocities(50, 0, 200);
myFinch.setWheelVelocities(-50, -50, 400);
} else if (random == 5) {
myFinch.setWheelVelocities(0, 50, 200);
myFinch.setWheelVelocities(50, 50, 500);
} else {
// Optional fallback behavior
myFinch.setWheelVelocities(50, 50, 300);
}
}
// Update light sensor readings again
isLeftLightSensor = myFinch.getLeftLightSensor() > 50;
isRightLightSensor = myFinch.getRightLightSensor() > 50;
}
myFinch.quit();
System.exit(0);
}
}