... | ... | @@ -49,17 +49,24 @@ For demonstration af dette program se videoen nedenfor |
|
|
Programmet BlackWhiteSensor.java kan potentielt set også bruges til at læse og reagere på andre farver end sort og hvid. I programmet ThreeColorSensor.java har vi implementeret en klasse der også kan detektere grøn.
|
|
|
|
|
|
```Java
|
|
|
if (sensor.green()) {
|
|
|
greenCount++;
|
|
|
if (greenCount > 30) {
|
|
|
break;
|
|
|
}
|
|
|
} else {
|
|
|
greenCount = 0;
|
|
|
}
|
|
|
public void calibrate()
|
|
|
{
|
|
|
blackLightValue = read("black");
|
|
|
whiteLightValue = read("white");
|
|
|
greenLightValue = read("green");
|
|
|
// The threshold is calculated as the median between
|
|
|
// the two readings over the two types of surfaces
|
|
|
blackWhiteThreshold = (blackLightValue+whiteLightValue)/2;
|
|
|
greenDetectionRange = Math.abs(blackLightValue - whiteLightValue) / 2;
|
|
|
}
|
|
|
```
|
|
|
|
|
|
Grøn udregnes som.. Ved at afprøve programmet står det også klart, at programmet detektere grøn som en threshold mellem sort og hvid. På opsætning nedenfor oplevede vi derfor også at programmet yieldede grøn, selvom
|
|
|
```Java
|
|
|
public boolean green() {
|
|
|
return Math.abs(greenLightValue - ls.readValue()) < (greenDetectionRange / 2);
|
|
|
}
|
|
|
```
|
|
|
Ved at afprøve programmet står det også klart, at programmet detektere grøn som en threshold mellem sort og hvid. På opsætning nedenfor oplevede vi derfor også at programmet yieldede grøn, selvom
|
|
|
|
|
|
![reader](http://gitlab.au.dk/uploads/group-5/group-5-lesson-4/04b289af5d/reader.JPG)
|
|
|
|
... | ... | @@ -68,6 +75,59 @@ Grøn udregnes som.. Ved at afprøve programmet står det også klart, at progra |
|
|
|
|
|
### Exercise 4 - Line Follower that stops in a Goal Zone
|
|
|
|
|
|
|
|
|
|
|
|
```Java
|
|
|
import lejos.nxt.*;
|
|
|
import lejos.util.Delay;
|
|
|
|
|
|
public class LineFollowerCal {
|
|
|
|
|
|
public static int greenCount = 0;
|
|
|
|
|
|
public static void main(String[] aArg) throws Exception {
|
|
|
final int power = 80;
|
|
|
|
|
|
ThreeColorSensor sensor = new ThreeColorSensor(SensorPort.S1);
|
|
|
|
|
|
sensor.calibrate();
|
|
|
|
|
|
LCD.clear();
|
|
|
LCD.drawString("Press ENTER", 0, 0);
|
|
|
LCD.drawString("to start!", 0, 1);
|
|
|
|
|
|
while (Button.ENTER.isDown()); // Wait till the button is released.
|
|
|
while (!Button.ENTER.isDown()); // Wait till the button is pressed again.
|
|
|
|
|
|
while (!Button.ESCAPE.isDown()) {
|
|
|
|
|
|
LCD.drawInt(sensor.light(), 4, 10, 2);
|
|
|
LCD.refresh();
|
|
|
|
|
|
if (sensor.green()) {
|
|
|
greenCount++;
|
|
|
if (greenCount > 30) {
|
|
|
break;
|
|
|
}
|
|
|
} else {
|
|
|
greenCount = 0;
|
|
|
}
|
|
|
|
|
|
if (sensor.black())
|
|
|
Car.forward(power, 0);
|
|
|
else
|
|
|
Car.forward(0, power);
|
|
|
|
|
|
Thread.sleep(10);
|
|
|
}
|
|
|
|
|
|
Car.stop();
|
|
|
LCD.clear();
|
|
|
LCD.drawString("Program stopped", 0, 0);
|
|
|
LCD.refresh();
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
*Video 2: Demonstration af programmet *
|
|
|
[![image alt text](http://img.youtube.com/vi/u0Iddyub2Z0/0.jpg)](http://www.youtube.com/watch?v=u0Iddyub2Z0)
|
|
|
|
... | ... | |