package javaBot.Nano.Rescue;
import com.muvium.apt.PeriodicTimer;
/**
* Opdracht - 6 Eenvoudige Line Follower met enkele sensor
*
* De lijnvolger gebruikt de reflectiesensoren (fieldsensoren)
* om de kleur van het veld onder de robot te bepalen.
* Hij volgt de zwarte lijn, eerst met een enkele sensor.
* In opdracht 7 ga je de lijn met twee sensoren volgen.
* Daarnaast ga je ook een subroutine gebruiken.
* Als laatste ga je ook de gele lijn volgen.
*/
public class LineFollowerBehavior08 extends Behavior
{
private BaseController joBot;
private int state = 0;
private int speed = 50;
private int fl = 0;
private int blkLs = 400; // Value of black on your field
private int yelLs = 700;
private int fr;
private int ds;
private int count = 0;
public LineFollowerBehavior08(BaseController initJoBot, PeriodicTimer
initServiceTick,int servicePeriod)
{
super(initJoBot, initServiceTick, servicePeriod);
joBot = initJoBot;
}
// Maak een eenvoudige lijnvolger met een enkele sensor
// Opdracht 6
public void doBehavior() {
if (state == 0) {
System.out.println("Enkelvoudige Line Follower");
joBot.setStatusLeds(false, false, false);
joBot.drive(speed, speed); // Rijd rechtuit
joBot.setFieldLeds(true); // Zet field leds aan
state = 1;
}
if (state == 1) {
fl = joBot.getSensorValue(BaseController.SENSOR_FL); // Left sensor
fr = joBot.getSensorValue(BaseController.SENSOR_FR); // Right sensor
ds = joBot.getSensorValue(BaseController.SENSOR_DS);
if (fl >= blkLs) {
joBot.drive(0, 50); // Go left
joBot.setLed(BaseController.LED_YELLOW, true);
}
if (fl < blkLs) {
joBot.drive(0, 50);
joBot.setLed(BaseController.LED_YELLOW, false);
}
if (fr < blkLs) {
joBot.drive(50, 0);
}
}
if (fl >= yelLs) {
joBot.drive(0, 50); // Go left
joBot.setLed(BaseController.LED_YELLOW, true);
}
if (fl > yelLs) {
joBot.drive(0, 50);
joBot.setLed(BaseController.LED_YELLOW, false);
}
if (fr > yelLs) {
joBot.drive(50, 0);
}
if (ds > 400){
state = 2;
}
if (state == 2){
joBot.drive(50, 0);
joBot.printLCD("state=2");
joBot.setStatusLeds(true, true, true);
if (count++ >=10){
joBot.drive(0, 50);
if (count >= 100);
state = 1;
}
}
}
}