1 / 48

Conditions and loops Day 4

Conditions and loops Day 4. Computer Programming through Robotics CPST 410 Summer 2009. Course organization. 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. Sound in NXT-G.

Download Presentation

Conditions and loops Day 4

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Conditions and loopsDay 4 Computer Programming through Robotics CPST 410 Summer 2009

  2. Course organization • 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. Harry Howard, CPST 410, Tulane University

  3. Sound in NXT-G Kelly §6 Make some noise!

  4. The SOUND block • This icon shows whether the block will play a sound file or a tone. • This icon shows whether the block will start or stop playing a sound. • This icon shows the block’s volume. An icon with four orange bars is set to the loudest volume. • You can drag data wires from other blocks to this block’s data hub that will affect the Sound block’s properties. Harry Howard, CPST 410, Tulane University

  5. Kelly's example, reversed • Spot, move forward 1 rotations at 50% power coasting to a stop and then play me a C note for 2 seconds at 75% volume. Harry Howard, CPST 410, Tulane University

  6. MoveSound.rbt Harry Howard, CPST 410, Tulane University

  7. Sound in NXC

  8. Two useful sound functions • Definitions • PlayTone(frequency, duration) • PlayFile(filename) • Examples • PlayTone(440, 500); Wait(500); • PlayFile(“Startup.rso”); • Note that PlayTone executes immediately, so that all by itself, it does not play for 500 ms; it relies on Wait to actually extend the duration to the one specified. Harry Howard, CPST 410, Tulane University

  9. Do Kelly's example in NXC • TRIBOT, move forward 1 rotation at 50% power coasting to a stop and then play me a C note for 2 seconds at 75% volume. Harry Howard, CPST 410, Tulane University

  10. MoveSound.nxc task main() { RotateMotor(OUT_AC, 75, 360); PlayTone(1047,2000); Wait(2000); } Harry Howard, CPST 410, Tulane University

  11. Waiting Kelly §10 Wait for it!

  12. Waiting • The robot is almost always waiting to do something, even when it is already doing something: • TRIBOT is moving towards a black line, waiting for the Light sensor to detect it. • TRIBOT is preparing to throw a ball at a target, waiting for the Touch sensor to be pressed and released. • TRIBOT is rolling towards the wall, waiting for the Ultrasonic sensor to detect it. • TRIBOT is sitting at the start line, waiting for the Sound sensor to hear me yell “Go!”. Harry Howard, CPST 410, Tulane University

  13. Conditions • The WAIT block will stop waiting when specific conditions are met. • The conditions are usually given by some kind of sensor feedback. • The blocks for each condition can be found in two ways: • Common palette > Wait. • By changing the setting from Time to Sensor on the Time WAIT block. Harry Howard, CPST 410, Tulane University

  14. The conditions • Time wait • Touch sensor wait • Light sensor wait • Ultrasonic sensor wait • NXT Buttons wait • Rotation sensor wait • Receive Message wait Harry Howard, CPST 410, Tulane University

  15. A simple test of a condition • TRIBOT, move forward for an unlimited duration at a power of 50 until the Touch sensor is pressed. Harry Howard, CPST 410, Tulane University

  16. MoveTilTouch.rbt Harry Howard, CPST 410, Tulane University

  17. A more complex example • SPOT, move forward for 1 rotation at 50% power, brake, and beep. If your Light sensor detects a light level greater than 30, move backward 1/2 rotation at 50% power, coasting to a stop. Harry Howard, CPST 410, Tulane University

  18. MoveTilLight.rbt Harry Howard, CPST 410, Tulane University

  19. Conditions in NXC

  20. A complication • The sensor functions in NXC do not include this ability to wait; all they do is read sensor values. • So you have to add the condition that the sensor value is supposed to meet, yourself. Harry Howard, CPST 410, Tulane University

  21. If • There are two options if (condition) consequence if (condition) consequence else alternative • Examples if (x == 1) y = 2; if (x == 1) { y = 2; z = 3; } if (x == 1) y = 3; else y = 4; Harry Howard, CPST 410, Tulane University

  22. We can’t do the simple test • TRIBOT, move forward for an unlimited duration at a power of 50 until the Touch sensor is pressed. • PROBLEM: there is no ‘unlimited’ parameter for any of the NXC movement functions, so we skip this task, though the next slide shows what we would want the program to look like. Harry Howard, CPST 410, Tulane University

  23. MoveTilTouch.nxc task main() { OnFwd(OUT_AC, 50); if (Sensor(S1) == 1) { Off(OUT_AC); } } Harry Howard, CPST 410, Tulane University

  24. The more complex example • TRIBOT, move forward for 1 rotation at 50% power, brake, and beep. If your Light sensor detects a light level greater than 30, move backward 1/2 rotation at 50% power, coasting to a stop. Harry Howard, CPST 410, Tulane University

  25. MoveTilLight.rbt task main() { RotateMotor(OUT_BC, 50, 360); PlayTone(1047, 500); Wait(500); if (Sensor(S3) > 30) { RotateMotor(OUT_BC, 50, -180); } } Harry Howard, CPST 410, Tulane University

  26. Loops Kelly §11 Round and Round

  27. How would you do this? • TRIBOT, display the output of the Light sensor briefly (500ms) 10 times. Harry Howard, CPST 410, Tulane University

  28. The LOOP block • The LOOP block repeats what is inside it until a condition is met. • The loop break conditions are the same as the WAIT conditions. • You drop a block inside a loop by grabbing the block, holding down the mouse button, and dropping it inside when the loop expands. Harry Howard, CPST 410, Tulane University

  29. Go ahead and do it • TRIBOT, display the output of the Light sensor briefly (1s) 10 times. Harry Howard, CPST 410, Tulane University

  30. DisplaySensorLoop.rbt Harry Howard, CPST 410, Tulane University

  31. Loops in NXC

  32. REPEAT • The repeat command, repeat(t) {}, repeats what is in the curly brackets for the number of times given by t. Harry Howard, CPST 410, Tulane University

  33. Convert the example to NXC • TRIBOT, display the raw output of the Light sensor briefly (1s) 10 times. Harry Howard, CPST 410, Tulane University

  34. DisplaySensorLoop.nxc int light; string text_light; task main() { repeat(10) { light = Sensor(S3); txt_light = NumToStr(light); TextOut(0, LCD_LINE4, txt_light); Wait(1000); } } Harry Howard, CPST 410, Tulane University

  35. More practice Program each bit of pseudocode in NXT-G and then in NXC. My suggestion follows each bit of pseudocode, so don’t look ahead until you are finished with your program!

  36. Follow up • TRIBOT, display the output of the Light sensor briefly (1s) 10 times and beep after each display. Laugh when you are finished. Harry Howard, CPST 410, Tulane University

  37. SensorLoopSound.rbt Harry Howard, CPST 410, Tulane University

  38. SensorLoopSound.nxc int light; string text_light; task main() { repeat(10) { light = Sensor(S3); txt_light = NumToStr(light); TextOut(0, LCD_LINE4, txt_light); Wait(1000); PlayTone(1047,500); Wait(500); } PlayFile(“Laughing 02.rso”); Wait(1000); } Harry Howard, CPST 410, Tulane University

  39. Epilog on scope • Note the difference being in the loop versus being out of the loop makes. PlayTone is played 10 times, because it is in the loop. PlayFile is only played once, because it is not in the loop. • The effect of an expression like repeat is known as its scope, and in NXC the scope of an expression is stated explicitly by means of the curly brackets. Harry Howard, CPST 410, Tulane University

  40. Thought experiment • How would you make TRIBOT move forward and then turn right -- four times? • By dropping in 8 MOVE blocks, each with the same settings (one for each forward move, and one for each turn). • Does this sound like a good usage of your time? • No! Harry Howard, CPST 410, Tulane University

  41. The pseudocode • TRIBOT, move forward for 0.5 s at 50% power and then make a 90° turn for 0.65 s also at 50% power. Do this 4 times. Harry Howard, CPST 410, Tulane University

  42. RepeatTurn.rbt Harry Howard, CPST 410, Tulane University

  43. Turning in NXC • You may have noticed that the NXC movement functions do not have the nice ‘steering wheel’ ability that NXT-G has. • The trick to turning in NXC is to reverse a motor. I’ll leave it up to you to figure out which one. Harry Howard, CPST 410, Tulane University

  44. RepeatTurn.nxc task main() { repeat(4) { OnFwd(OUT_BC, 50); Wait(500); OnRev(OUT_C, 50); Wait(650); } } Harry Howard, CPST 410, Tulane University

  45. Mix them up • TRIBOT, move forward for 1 rotation at 50% power and coast. If your Light sensor detects a level greater than 20, beep and move backward 1/2 rotation at 50% power, coasting to a stop. Do this 3 times, then say the number ‘three’. Harry Howard, CPST 410, Tulane University

  46. MoveLightLoop.rbt Harry Howard, CPST 410, Tulane University

  47. MoveLightLoop.nxc task main() { repeat(3) { RotateMotor(OUT_BC, 50, 360); if (Sensor(S3) > 20) { PlayTone(1047,500); Wait(500); RotateMotor(OUT_BC, 50, -180); } } PlayFile(“03.rso”); Wait(1000); } Harry Howard, CPST 410, Tulane University

  48. Next time • Quiz 1 • This will just be a quiz on the blocks. • More loops, switching. • Random numbers. • 'Line Follower' - project done in class Harry Howard, CPST 410, Tulane University

More Related