EasyManua.ls Logo

LEGO MINDSTORMS Robots - Page 186

LEGO MINDSTORMS Robots
226 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
Page 206
#define COMMAND_REVERSE 2
#define COMMAND_LEFT 3
#define COMMAND_RIGHT 4
#define COMMAND_STOP 5
int avoid_command;
int avoid(int argc, char ∗∗argv) {
avoid_command = COMMAND_NONE;
while(1) {
if (SENSOR_1 <0xf000) {
avoid_command = COMMAND_REVERSE;
msleep(BACK_TIME);
avoid_command = COMMAND_RIGHT;
msleep(TURN_TIME);
avoid_command = COMMAND_NONE;
}
if (SENSOR_3 < 0xf000) {
avoid_command = COMMAND_REVERSE;
msleep(BACK_TIME)
avoid_command = COMMAND_LEFT;
msleep(TURN_TIME);
avoid_command = COMMAND_NONE;
}
}
return 0;
}
#define RAW_DARK 0x7c00
#define RAW_LIGHT 0x6000
int process_light(int raw) {
long big = 100 (long)raw - RAW_LIGHT);
long percent = big / (RAW_DARK - RAW_LIGHT);
return 100 - (int)percent;
}
int seek_command;
#define FUDGE 5
int wait_for_better(int baseline, unsigned long milliseconds) {
int current;
int saved_time = sys_time;
do {
msleep(50);
current = process_light(SENSOR_2);
lcd_int(current 100 + baseline);
lcd_refresh();
} while (sys_time < (saved_time + milliseconds)
&& current < (baseline + FUDGE));
if (current >= (baseline + FUDGE)) return current;
return -1; // Timed out.
}

Table of Contents

Related product manuals