import nanovm.nibobee.drivers.Clock;
import nanovm.nibobee.drivers.LineDetector;
import nanovm.nibobee.drivers.Motor;
/** NibobeeLineFollowExample.java
*
*
* @see code based on c found at www.mikrocontroller.net
* @author Torsten Röhl <informatics4kids.de>
*/
class NibobeeLineFollowExample {
public static void main(String[] args) {
int speed_flt_l=0;
int speed_flt_r=0;
LineDetector.setEnableIR(true);
while(true){
Clock.delayMilliseconds(1) ;
int speed_l = 0;
int speed_r = 0;
int vL = LineDetector.getValue(LineDetector.LEFT);
int vC = LineDetector.getValue( LineDetector.CENTER);
int vR = LineDetector.getValue( LineDetector.RIGHT);
if( vL + vC + vR < 20){
speed_r = 0;
speed_l = 0;
} else if( (vL< vC) && (vL < vR)){
speed_r=550;
speed_l=450-1*(vC-vL);
}else if ((vR<vC) && (vR<vL)) {
speed_r=450-1*(vC-vR);
speed_l=550;
} else {
speed_r=750 + 1*(vR-vC);
speed_l=750 + 1*(vL-vC);
}
speed_flt_l*=3; speed_flt_l+=speed_l; speed_flt_l/=4;
speed_flt_r*=3; speed_flt_r+=speed_r; speed_flt_r/=4;
if(speed_flt_l < 50 && speed_flt_r < 50 ){
speed_flt_l = 200;
speed_flt_r = 200;
}
Motor.setPWM(speed_flt_l, speed_flt_r);
}
}
}