User Tools

Site Tools


marvin:lab1

This is an old revision of the document!


LAB1

Date: September 5th 2008
Duration of activity: 9-13.30
Participants: Kasper, Johnny og Bent

lab1-1.jpg lab1-2.jpg lab1-3.jpg

Problemer med installation af software. kan ikke kommunikere med USB til NXT modulet.

Kan desuden ikke resette NXT modulet, der formodes at være i stykker. NXT modulet kunne ikke kommunikere, så vi skiftede til et andet modul. Modulet lå på Ole's kontor, men han var ikke tilstede. (Testede at det ny modul kunne resettes).
Fik hjælp til at flashe fra en anden gruppe.
Indsamlede lego stumper.
Uploadede program og testede på banen, test OK.
Foretog ændringer i programmet og testede på banen, test ikke OK.
- Hastigheden svarede ikke til forventningerne, derfor ændrede vi programmet tilbage og skiftede batteri og foretog ny test. Problemet blev ikke løst. Testede motorer på en anden gruppes NXT modul, og motorerne virkede fint. Hentede et HELT NYT NXT modul, flashede, uploadede igen java koden fra hjemmesiden og testede endnu engang. Stadig samme problem.
Frustration!
Henter nu endnu engang java kode (linefollower) fra hjemmesiden for at være helt sikker. Sletter alt gammel kode, linker, uploader. Upload succesfuld :-)
Det konkluderes, at vi har kørt med forkert kode - øv, men nu virker det!

Koden

import lejos.nxt.*;
/**
 * A simple line follower for the LEGO 9797 car with
 * a single light sensor.
 * 
 * The light sensor should be connected to port 3. The
 * left motor should be connected to port C and the right 
 * motor to port B.
 * 
 * Variables initialized with a constant string are used 
 * in the LCD.drawString calls of the control loop to 
 * avoid garbage collection. 
 * 
 * @author  Ole Caprani
 * @version 22.08.08
 */
public class LineFollower {
 
	public static void main (String[] aArg)
	throws Exception
	{
		String left = "Left ";
		String right= "Right";
 
		LightSensor light = new LightSensor(SensorPort.S3);
		final int blackWhiteThreshold = 45;
 
		final int forward = 1;
		final int stop = 3;
		final int flt = 4;
		final int power = 80;
 
		// Use the light sensor as a reflection sensor
		light.setFloodlight(true);
		LCD.drawString("Light %: ", 0, 0);
 
		// Show light percent until LEFT is pressed
		while (! Button.LEFT.isPressed()){
			LCD.drawInt(light.readValue(), 3, 9, 0);
			LCD.refresh();
		}
 
		// Follow line until ESCAPE is pressed
		while (! Button.ESCAPE.isPressed()){
 
			if (light.readValue() > blackWhiteThreshold){
				// On white, turn right
				LCD.drawString(right, 0, 1);
				MotorPort.B.controlMotor(0,stop);
				MotorPort.C.controlMotor(power, forward);
			}
			else{
				// On black, turn left
				LCD.drawString(left, 0, 1);				
				MotorPort.B.controlMotor(power, forward);
				MotorPort.C.controlMotor(0,stop);
			}
			LCD.drawInt(light.readValue(), 3, 9, 0);
			LCD.refresh();
			Thread.sleep(100);
 
		}
 
		// Stop car gently with free wheel drive
		MotorPort.B.controlMotor(0,flt);
		MotorPort.C.controlMotor(0,flt);
		LCD.clear();
		LCD.drawString("Program stopped", 0, 0);
		LCD.refresh();
		Thread.sleep(1000);
	}
}

Test af Sensor - transmitter/Optokobler

Vi når at måle følgende intensiteter fra lysdioderne:

Overflade Intensitet
sort 36
hvid 56
blå 40-44
grå 47
brun tape 46-49
blåmønstret gulv 41

Desuden bemærkes at afstanden har stor påvirkning på tallene.

marvin/lab1.1223557141.txt.gz · Last modified: 2008/10/09 14:59 by rieper