NXT Logo Examples: A simple interactive control of NXT-G program from Imagine using files

From RoboWiki
Revision as of 02:19, 24 March 2009 by Palo (talk | contribs) (New page: In this project, we build a robot that has an ultrasonic distance sensor on the front and keeps a required distance from the wall: when the distance is lower, the robot moves back, when it...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

In this project, we build a robot that has an ultrasonic distance sensor on the front and keeps a required distance from the wall: when the distance is lower, the robot moves back, when it is larger, it moves forward. In this way, the robot is also able to follow a person in a required distance, or go back when somebody approaches the robot...

Keep distance with slider robot.png

We would like to make the program in such a way that we can interactively regulate this distance using a slider. Thus in Imagine Logo, we create a slider (it will get a name s1):

Keep distance with slider imagine slider.png

Whenever we move the slider to the left or right, we will change the distance of the empty buffer that the robot keeps in front of it: Imagine will write this value (in cm) directly to a file in NXT's flash memory using the following function:

to change_file

 let "d1 (div s1'value 10)
 let "d2 (mod s1'value 10)
 ignore nxt_delete "MyFile.txt
 let "handle last (nxt_openwrite "MyFile.txt 2)
 ignore nxt_write :handle (word :d1 :d2) 128
 ignore nxt_close :handle
 wait 100

end

Finally, we need some program for the robot so that it will keep the distance according to the value in the file. This time, we make that program using standard NXT-G programming environment, and it will look as follows:

Keep distance with slider nxt g program.png

The robot repeats a loop: read a value from file, close the file, then read the value of the ultrasonic distance sensor on port 4, and finally compare the sensor readings with the value that was read from the file. Depending on the result of the comparison, the robot moves forward or backs up.