EasyManuals Logo
Home>LEGO>Toy>MINDSTORMS Robots

LEGO MINDSTORMS Robots User Manual

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
Page #127 background imageLoading...
Page #127 background image
MOTOR_TASK BUILD
TIMER_TASK BUILD
SENSOR_TASK BUILD
DISPLAY_TASK BUILD
3. Next, you need to actually define what each task does. This is done with the ACTIVATE word, which can be used only inside a definition. Consider, for example, the MOTOR_TASK. Basically,
we want it to look like this:
BEGIN UPDATE_MOTORS PAUSE AGAIN
The real work of the task is in UPDATE_MOTORS, a word that examines some other values in the system and sets the state of the motors. The PAUSE word is the key to cooperative
multitasking-it passes control to the next task in the list. To associate this loop with MOTOR_TASK, we need another special word, ACTIVATE:
:NONAME MOTOR_TASK ACTIVATE BEGIN UPDATE_MOTORS PAUSE AGAIN ; EXECUTE
The ACTIVATE word associates MOTOR_TASK with the rest of the NONAME definition, which is simply the endless BEGIN AGAIN loop. To link the code into the task list, the NONAME
definition is executed. (The combination of NONAME and EXECUTE allows you to execute a defined word just one time. Because it doesn't have a name, you can't execute the defined word
again later.) The tortast.txt example sets up its other three tasks in the same way:
:NONAME TIMER_TASK ACTIVATE BEGIN UPDATE_TIMERS PAUSE AGAIN ; EXECUTE
:NONAME SENSOR_TASK ACTIVATE BEGIN UPDATE_SENSORS PAUSE AGAIN ; EXECUTE
:NONAME DISPLAY_TASK ACTIVATE BEGIN UPDATE_DISPLAY PAUSE AGAIN ; EXECUTE
4. To actually start the tasks running, use AWAKE, like this:
DISPLAY_TASK AWAKE
SENSOR_TASK AWAKE
TIMER_TASK AWAKE
MOTOR_TASK AWAKE
Page 137
To dive into this a little more, check out the whole tortask.txt example at the pbFORTH web site.
An Expensive Thermometer
This section contains an example that will help you get your feet wet with pbFORTH. We'll build a simple Celsius thermometer using a temperature sensor. Hook the sensor up to input 2 and enter
the following (I've omitted pbFORTH's ''ok" responses for clarity):
HEX
: buttonState RCX_BUTTON DUP BUTTON_GET @ ;
: isRunButtonPressed buttonState 1 AND ;
: showTemperature
3003 SWAP 3001 LCD_NUMBER
LCD_REFRESH
;
: clear LCD_CLEAR LCD_REFRESH ;
: thermometer
RCX_INIT
SENSOR_INIT
BUTTON_INIT
2 1 SENSOR_TYPE
A0 1 SENSOR_MODE

Table of Contents

Questions and Answers:

Question and Answer IconNeed help?

Do you have a question about the LEGO MINDSTORMS Robots and is the answer not in the manual?

LEGO MINDSTORMS Robots Specifications

General IconGeneral
BrandLEGO
ModelMINDSTORMS Robots
CategoryToy
LanguageEnglish

Related product manuals