Download presentation
Presentation is loading. Please wait.
Published byEzra Kelly Modified over 9 years ago
1
Encapsulation Day 11 Computer Programming through Robotics CPST 410 Summer 2009
2
7/1/09Harry Howard, CPST 410, Tulane University2 Course organization Course home page Course home page (http://robolab.tulane.edu/CPST410/) Lab (Newcomb 442) will be open for practice with 3-4 Macs, but you can bring your own laptop and all robots.
3
Encapsulation My Blocks vs. Functions
4
My Blocks in NXT-G Kelly §26 ‘My Block is your block’ Open the Mindstorms app.
5
7/1/09Harry Howard, CPST 410, Tulane University5 A silly program Tribot, do the following slowly (at 50% speed): Spin right for a rotation, and then show a happy face. Move forward for a second, and then beep. Spin left for a rotation, and then say “good job!”.
6
SillyProgram.rbt
7
7/1/09Harry Howard, CPST 410, Tulane University7 Analysis Note that the program really has three parts, but the structure of the program does not show this division. There is a way to encapsulate each part into its own block, called a My Block.
8
7/1/09Harry Howard, CPST 410, Tulane University8 My Blocks Select the first part (the first three blocks). Go to the Edit menu of the Mindstorms NXT application and choose “Make a New My Block”. Give the block an informative name like StartUp and a short explanation. Click the ‘Next’ button and choose a picture for it, such as one of the motor icons. Click ‘Finish’. You have just created your first MY BLOCK. It should have occupied the place of the originals in your program, as shown in the next slide.
9
SillyProgram.rbt with StartUp
10
Keep on going Note that if you double click on StartUp, it opens up in a new piece of graph paper, as if it were a program itself. MY BLOCKS are stored in the Custom palette (aquamarine equals sign). Now turn the other two pairs of blocks into My Blocks.
11
7/1/09Harry Howard, CPST 410, Tulane University11 SillyProgram.rbt with MY BLOCKS
12
Functions in NXC Close the Mindstorms app, and open BricxCC.
13
7/1/09Harry Howard, CPST 410, Tulane University13 SillyProgram.nxc task main () { OnFwdSync(OUT_BC, 50, 100); Wait(1000); Off(OUT_BC); GraphicOut(0, 0, "faceopen.ric"); Wait(500); RotateMotor(OUT_BC, 50, 360); PlayTone(440, 500); Wait(500); OnFwdSync(OUT_BC, 50, -100); Wait(1000); Off(OUT_BC); PlayFile("Good Job.rso"); Wait(700); }
14
7/1/09Harry Howard, CPST 410, Tulane University14 Functions = My Blocks p. 149ff Syntax: insert ‘void’ from Program return_type name(argument_list) { “statements” } If there is no return type, use ‘void’. Define a function before the main task.
15
7/1/09Harry Howard, CPST 410, Tulane University15 SillyProgram.nxc with one function void StartUp() { OnFwdSync(OUT_BC, 50, 100); Wait(1000); Off(OUT_BC); GraphicOut(0, 0, "faceopen.ric"); Wait(500); } task main() { StartUp(); RotateMotor(OUT_BC, 50, 360); PlayTone(440, 500); Wait(500); OnFwdSync(OUT_BC, 50, -100); Wait(1000); Off(OUT_BC); PlayFile("Good Job.rso"); Wait(700); }
16
7/1/09Harry Howard, CPST 410, Tulane University16 SillyProgram.nxc with 3 functions void StartUp() { OnFwdSync(OUT_BC, 50, 100); Wait(1000); Off(OUT_BC); GraphicOut(0, 0, "faceopen.ric"); Wait(500); } void ImportantStuff() { RotateMotor(OUT_BC, 50, 360); PlayTone(440, 500); Wait(500); } void ShutDown() { OnFwdSync(OUT_BC, 50, -100); Wait(1000); Off(OUT_BC); PlayFile("Good Job.rso"); Wait(700); } task main() { StartUp(); ImportantStuff(); ShutDown(); }
17
7/1/09Harry Howard, CPST 410, Tulane University17 Next time Parallelism.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.