2007 – 2008 Computer Programming and Robotics Syllabus Instructor: Chris D. Odom Office Location: Spruance Alden Science Center, 1st West E-mail: chris_odom@georgeschool.org Phone Numbers: 215.579.6726 (office), 215.579.6760 (home) Arrangements: 4 & 6 Text and Materials: BasicX and Robotics: The Art of Making Machines Think Visual Basic 6.0. (The school will provide this for your own PC.) (Optionl) Small notebook or composition book Class Content and Prerequisites: Quakers always valued life experience more than received wisdom. -- R. L. Smith A Quaker Book of Wisdom, page 64. This quote from Smith’s book is exactly how I feel about learning computer programming, or anything else for that matter. Most of us learn best by doing rather than being told what to do, and I strive to make my classes as hands-on as possible. Each student will have access to their own classroom computer and will use them continuously during the class period. I will not lecture on computer theory, rather you and I will write own mini-programs individually and in small teams. Later, you will fully take over and write your own larger applications. In the first two terms we will cover top-down programming with the BasicX language. You will use BasicX to program the BX-24 microprocessor – learning such topics as computer arithmetic, data types, control structures, logic expressions, arrays, and lots of robotics and electronics applications. If time permits, I will introduce you to the HTML language so you can create your own web journal. In the last term we will both prepare for external competitions and learn about object oriented programming (OOP) using Visual Basic 6.0. With VB you will manage visual controls, manipulate user inputs, control file I/O, use conditional logic effectively, create computer animation and graphics, build multimedia applications, use variable and control arrays, and distribute your applications. It is expected that you are already proficient with common computer applications (word processing, using spreadsheets, browsing the internet, navigating George Net) as well as applying the mathematical techniques learned in introductory algebra classes, including trigonometry. Consultations: To arrange consultation times, email me or talk to me in person. See me as often as needed. It is imperative that you stay on top of your assignments and understand the material before we move on. Working one-on-one with you will allow me to correct any “fuzzy thinking”. E-Communication: You are expected to check your George School email at least daily. I will send important and timely information via this method. Rating Scale: All work will be graded on a one hundred-point scale with the following weight towards the final grade. Individual Work: Class/Group Work: Exams: 55% 15% 30% Term Weights: Each term will count as 1/3 of your final grade. Page 1 of 9 A: B: C: D: 90 – 100 80 – 89 70 – 79 60 – 69 My Expectations: I will do anything in my power to assist you in reaching the goals you have set for yourself concerning this course; however I do not demand excellence. The amount of effort you give to this class is your decision. Nevertheless, I do demand two things from you: 1. You must understand and follow the Computer Rules found at the end of this document. 2. I expect your Total Attention while we are in class. Your inattention places an unfair burden on your classmates and myself and will not be tolerated. This rule means that you will not be allowed to sleep during class, be perpetually late to class, or intentionally distract the class. Additionally, if you are serious about learning computer programming you will endeavor to follow a few additional guidelines: Ask lots of questions. You’ve heard this before, but quite honestly, the only dumb question is one that is never asked. Having a positive and serious attitude is necessary for the successful completion of this course. Clowning around during class will prevent us from covering all necessary material. This does not imply that you should refrain from asking questions! Nor does it mean we must not deviate from the prescribed course outline. I firmly believe that depth is more important than breadth. That is, fully understanding the material we do cover is better than covering a lot of material that we don’t well understand. Attendance: Attendance is mandatory for this course. If you do miss a class or a lab with an excused absence, then you must make immediate arrangements with me to make up the work and turn in all assignments. If you know ahead of time that you will be absent, contact me as soon as possible. Tardiness: Be on time to class! Coming in late is a disruption to your classmates and to me. The student who arrives late will risk missing class work at the beginning of class. Additionally, any unexcused lateness of 15 minutes or more may be reported as a cut. Class Participation: Group participation is crucial to the dynamic, ever-changing world of computer programming. Keeping your ideas to yourself is a detriment to yourself, your classmates, and to me. Forcing yourself to use the tools and techniques we learn in class will assure that you will be at your best when you write your own applications. Look for ways to be creative. This is a class designed to let you express your imagination in new and unique ways. Don’t squander that opportunity. Individual Work: Many individual projects (such as robotic Challenge Problems) will be given each term on material covered in class. Partial credit may be given for programs that do not satisfy all criteria. Form and function are equally important aspects here. Generally, programming homework is not given in this class; however, you may choose to work on projects outside of class when time permits. Often students respond to this class by spending all of their study time writing code. Programming can be addictive, so be careful that your other studies do not suffer. Group Projects: One of the more fun aspects of this course is working on the Group Projects. These are opportunities to write larger programs with your classmates. They will be graded on several criteria including development time, creativity, elegance, the final output, and lack of “bugs”. One example of the Group Project is robot competitions. Some competitions will be optional, others will be mandatory. I encourage all students to get involved in these competitions because they are fun and exciting. Exams: Cumulative exams will be given at the end of each term. They will be based largely on the end-ofchapter Challenge Problems as well as projects throughout the year. Notebooks: I have found pencil and paper to be very handy, especially when trying to hammer out some particularly complicated block of code. I have written many of my programs on paper, miles from the nearest computer. If you keep a notebook it will not be graded. Using Technology: Using technology excuses for missed assignments will not be permitted. Computer technology is here to stay and you must learn how to use it effectively. Plan ahead and get into the habit of backing up your work! Each of you is allotted 1GB of storage space in your GS home directory on GS-1 and you should take advantage of this space for storing your work. George School IT Services performs a tape backup of the home directory space every night; your data is safe here! Do not keep the only copy of your work on a removable drive – that is asking for trouble. Page 2 of 9 Cheating: Any form of academic dishonesty will not be tolerated in this class. This explicitly means submitting any work or ideas for grading that is not your own. Please be careful. I prefer working in a community built around trust and friendship. No grade you could receive for poor work would be as damaging to you as cheating. I encourage students to work together, nevertheless you are to turn in your own work. Students often have a difficult time distinguishing between teamwork and plagiarism so concrete guidelines will be drawn up as the year progresses. Editing Support: If you discover mistake in my textbook, please let me know. Head of School List: To make the Head of School’s list in my class, you need to only on thing: You must embody this quote by 13th Century Persian poet, Jalal Ud-Din Rumi: “Sell your cleverness and buy bewilderment.” Food and Drinks: With the exception of bottled water, food and drinks will not be permitted in the classroom. I am afraid that you are paying for the transgressions of students from past years. Leaving trash in the classroom for me, my co-op, or Environmental Services to clean up is disrespectful. The privilege has been abused and will be revoked. I am sorry. If you are going to drink, please drink responsibly. Remember to recycle your plastic bottles on your way out of the building. Playing Music: There is nothing like programming a robot while listening to some music. To this end, I will permit you to listen to your own MP3 player while you are busy writing your own code. While I am talking however, the music should be paused and the ear buds removed! This rule also applies when a visitor enters the room. Failure to follow these simple and respectful rules will mean you will lose the privilege. For those who do not bring in an MP3 player, I will play music over the speakers at the front of the class. You will not be permitted to play your music out loud unless it is played through my speakers! We will rotate who controls the music each class meeting. When it is your day to play music, you may bring in a CD, MP3 player, or save your music on my PC and play it from there. You and a friend may wish to consolidate your music. Music played over the Internet will not be allowed unless it is played from my PC. The Internet: This is a class in computer technology, so it stands to reason that we will need to use the Internet to conduct research. In the recent past, students have abused this privilege and spent time in chat rooms, on music sites, on their email accounts, and aimlessly browsing the Internet. Using the Internet for these purposes will not be permitted. Computer Rules: 1. 2. 3. 4. 5. 6. 7. Never jostle or bang on the computer (even a laptop). Always Log-off the machine before storing it! When turning the computer off, make sure the computer has fully logged-off before closing the lid! That is, wait for login screen to appear before closing the computer. Always return the computer to its correct shelf for storage. Always recharge the computer with the power cord associated with that shelf. Do not vandalize the computer equipment. Leave your lab station neat, clean, and organized at the end of each class period. "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music." – Kristian Wilson, Nintendo Inc., 1989 Page 3 of 9 Robotics Classwork Timeline Dates are approximate and the document may vary over time. Advanced students may move at a significantly faster pace. Week 1 Discuss syllabus and safety concerns. Students buy books. Pass out optical mice, serial cables, microcontrollers, motherboards, battery packs, and tool boxes. Students fill out equipment inventory checklist. Robot Demos Read the Foreword (page xiii), How to Read This Text (page xv) and Sections 1-3 in Chapter 1 (pages 1-5) in the textbook as homework before the first day of class. Carefully read Chapter 1: Getting Started and perform all the steps with your own microcontroller. Chapter 1 Challenge Problems: #1 Have the instructor check your solution code before proceeding to the next chapter. Carefully read Chapter 2: Screen Output and perform all the steps with your own microcontroller. Chapter 2 Challenge Problems: #1, 4 (see www.network-science.de/ascii/), and 5. Have the instructor check your solution code before proceeding to the next chapter. Homework: Read the first two helpful hints in Appendix H: Helpful Programming Hints. This document can be found online at www.basicxandrobotics.com/additions/helpfulhints.pdf. You will apply these hints to all future assignments. Week 2 Quiz: “Robot Screen Output.doc” Carefully read Chapter 3: LEDs and Delays and perform all the steps with your own BX-24. Do Self Test #1. Chapter 3 Challenge Problems: Do the following: o 2 (just make the onboard LEDs blink), o 3 (there is no need to blink any lights for this problem – just print number to the screen), o 4 (there is no need to print any numbers to the screen for this problem), o then do either #5 or #8, o finally, rework #3 but use a For-To-Next Loop as shown in Self Test #1 on page 39. Bonus: Do #2 but use a For-To-Next loop. (See Self Test #1.) Have the instructor check your solution code before proceeding to the next chapter. Homework: Study the tutorial on how to solder. This is found on the textbook’s website at www.basicxandrobotics.com/tutorials/end%20pins/index.html. In the lab, solder four end pin connectors to the ends of two wires: one yellow wire and one black. The wires should be about 10cm in length. Refer to the textbook’s online tutorial at www.basicxandrobotics.com/tutorials/end%20pins/index.html. Do not proceed until the instructor has inspected your end pins. Add shrink tubing to your two wires to make jumper wires. Refer to the textbook’s online tutorial at www.basicxandrobotics.com/tutorials/jumpers/index.html for assistance. Do not proceed until the instructor has inspected your jumper wires. It’s time to check your battery voltages! Study the tutorial www.basicxandrobotics.com/tutorials/battery%20check/ to find out how. From now on, measure your battery voltage often and if they are low recharge them! Homework: Carefully read Sections 4-6 in Chapter 11: Introduction to Servomotor Programming. Page 4 of 9 Weeks 3 & 4 Hand out a piezo buzzer and audio transducer to each student. Carefully read Appendix D: Controlling the Piezo Buzzer and Audio Transducer. You can gloss over Section 2, which discusses some concerns with electrical currents and may omit Section 6 if you wish. Use your own piezo buzzer, jumper wires, and microcontroller to make the buzzer beep a couple of times. Nothing fancy – just show me that you can turn the buzzer on and off. Quiz: Easy Morse Code (See Challenge Problem #3-7) Carefully read Chapter 4: Computer Arithmetic. You do not have to enter all the steps into your own code, but it is crucial that each mathematical operation is well understood! Chapter 4 Challenge Problems: #5, 6, 7, 13 (write answers in your text), 14 (choose 2), 16 (show both roots), 24 (pick 2), 25 (pick 2), 26, 37, 39, and 47. Be sure to print the number of each problem to the screen! Use print statements to make the answer readable, including the showing of units where applicable. For instance: Debug.Print "#3" Debug.Print "Area = " & CStr(0.5*16.0*23.0) & " cm^2" Debug.Print Print your solution code and give it to the instructor. (An electronic copy may also be requested.) Week 5 Continue working on Chapter 4 Challenge Problems. Carefully read Chapter 5: Variables, Constants, and Data Types and perform all the steps with your own microcontroller. Do all the Self Tests. Homework: Read the helpful hints I-XI in Appendix H: Helpful Programming Hints. This document can be found online at www.basicxandrobotics.com/additions/helpfulhints.pdf. You will apply these hints to all future assignments. Week 6 Chapter 5 Challenge Problems: #1, 2, 3, 4, and 5. Be sure to follow the hints given by Appendix H: Helpful Programming Hints. For example, solving the quantity df, we may write: Const d as Single = 3.0 Const f as Single = -7.2 Dim ans as Single Debug.Print "Example" Ans = d*f Debug.Print "answer = " & CStr(ans) Debug.Print Have the instructor check your solution code before proceeding. Carefully read Sections 1-4 of Chapter 12: Subprograms. You should enter and run the Countdown and FiveRedFlashes procedures as explained in textbook. Also, perform Self Tests 1, 2, and 3. You will make use of subprograms to answer all of the Challenge Problems in the remainder of the book. Weeks 7 & 8 Chapter 5 (Chapter 4 Revisited) Challenge Problems. Rework the following Chapter 4 problems, explicitly using variables and constants where appropriate. Put the code for each Challenge Problem in its own procedure (see Chapter 12) and call each solution from the Main procedure. Be sure to follow the hints given by Appendix H: Helpful Programming Hints. Chapter 4: #16 (show both roots), 24 (pick 2), 29, 42, 53, 58, 67b, and 72 (pick two planets). Print your solution code and give it to the instructor. (An electronic copy may also be requested.) Bonus: #37, 47, 59, 67d, 67h Quiz: “Robot Math Quiz.doc” Page 5 of 9 Week 9 Challenge Project: Create a Morse code application complete with sub-procedures. Students should create and define the following global constants (see 12.3): DotLength, DashLength, SmallPause, LetterPause, WordPause, PiezoPin, PiezoOn, and PiezoOff. Then create two procedures named Dot and Dash, that turns the piezo buzzer on for an appropriate amount of time (i.e., DotLength and DashLength). These two procedures should utilize many of the global constants and end with a SmallPause delay. Next students should create procedures for each letter of the alphabet. These letter procedures should print each letter to the screen, call the Dot and Dash procedures as needed and end with a LetterPause delay. Finally, from Main, send a short Morse code message via the piezo buzzer. Any words should be separated with a WordPause delay. Have the instructor check your code and output before proceeding. Homework: Read over Chapter 6: Data Type Conversions and Numerical Rounding. This is a very dry, but necessary, chapter. Proceed through the chapter as quickly as possible. You do not need to enter all the steps into your own code, but you should carefully follow the examples in the text. Think of this chapter as reference material to be understood, but not necessarily committed to memory. Week 10 Chapter 6 Challenge Problems: #1, 2, 3, and 4. Write all your answers in the textbook. Have the instructor check your answers before proceeding. Homework: Read over Chapter 7: Advanced Computer Mathematics. You do not need to enter all the steps into your own code, but you should carefully follow the examples in the text and be familiar with the kinds of advanced mathematical operations that are possible with the BX-24. Think of this chapter as reference material to be understood, but not necessarily committed to memory. Week 11 (Optional) Chapter 7 Challenge Problems. Ask your instructor if these problems are to be assigned. Put the code for each Challenge Problem in its own procedure (see Chapter 12) and call each solution from the Main procedure. #5, 6, 9*, 20, 22 (pick 2), 23 (pick 2), 34. * Note, to find the chemical concentration absorbed by the body, use the equation Ca Co 1 e kt . Bonus: #8, 11, 17, and/or 31. Print your solution code and give it to the instructor. (An electronic copy may also be requested.) Week 12 Study the tutorial on how to make external LED assemblies. This is found on the textbook’s website at www.basicxandrobotics.com/tutorials/LED/index.html. In the lab, make at least two LED assemblies of different colors. Do not proceed until the instructor has inspected your external LEDs. Challenge Project: Write a program that will make your external LEDs flash on and off in an exciting pattern. BONUS Challenge Project: Tune a guitar string using an external LED. A guitar string when plucked produces a unique frequency. If the LED flashes on and off at that frequency, the string will appear to stand still. (Ask your physics teacher about the phenomenon of standing waves.) If the frequency of the guitar string does not match that of the flashing LED, the string will appear to move slowly up and down. (Ask your physics teacher about the phenomenon of aliasing.) Use the PulseOut or FreqOut functions (see Appendix D) to make the LED flash with the appropriate frequency. BONUS Challenge Project: Make an LED array. Use the array to light up a room in either visible or infrared (IR) light. Note that video cameras and digital cameras detect IR light that our eyes can’t see! Use this to record the activity of nocturnal creatures! Information on making LED arrays is found on the textbook’s website at www.basicxandrobotics.com/tutorials/LEDarray/index.html. Page 6 of 9 Weeks 13, 14, & 15 Carefully read Chapter 8: For-To-Next Loops and perform all the steps with your own microcontroller. If there are a number of students at this same point, this might be a good chapter to do as a class. Do both Self Tests and Practical Problems 1 and 3. Chapter 8 Challenge Problems. Put the code for each Challenge Problem in its own procedure (see Chapter 12) and call each solution from the Main procedure. #2, 3, 6, 8, 12, 13, 14, 19, 34, and 36. Bonus: #5, 25, 38, and/or 43. Print your solution code and give it to the instructor. (An electronic copy may also be requested.) Carefully read Chapter 9: Do Loops and perform all the steps with your own microcontroller. If there are a number of students at this same point, this might be a good chapter to do as a class. Do all three Self Tests and Practical Problems 1, 2, and 3. Chapter 9 Challenge Problems. Put the code for each Challenge Problem in its own procedure (see Chapter 12) and call each solution from the Main procedure. #2, 8, 9, 14, 15, 21, 30, 37, and 41. Bonus: #4, 17 (work with a friend or three), 20, 31, and/or 51. Print your solution code and give it to the instructor. (An electronic copy may also be requested.) Week 16 We’ll do this next assignment as a class activity. Together, read Chapter 10: BX-24 Clock Works. The instructor will email some code to you, so this should go quickly. Specifically, we will cover Sections 1, 2, 3, Self Test 1, and Section 5. Chapter 10 Challenge Problems. These may also be a class activity – ask your instructor before beginning these problems on your own! Put the code for each Challenge Problem in its own procedure (see Chapter 12) and call each solution from the Main procedure. #3, 4, 6, 7, 8a, 8d, 8g, and 9. Bonus: #5, 12 Have the instructor check your answers before proceeding. Week 17 Pass out robot materials: chassis, servomotors, wheels, tail wheel, standoffs, and mounting screws. Carefully read Chapter 11: Introduction to Servomotor Programming and build your robot. Also, follow all the programming steps with your own robot. Do all the Self Tests. Chapter 11 Challenge Problems. Put the code for each Challenge Problem in its own procedure (see Chapter 12) and call each solution from the Main procedure. You will need to define some global constants (see Chapter 12.3). You may wish to create a new application for each Challenge Problem. It is likely that your robot will not move in straight lines. Don’t worry. We’ll rectify this in Chapter 13. #2, 3, and 17. Before proceeding, show some of your solutions to the instructor. Quiz: “Servo Safety Quiz.doc”. You must pass this quiz before proceeding. Challenge Project: Have your robot compete in a few of the Classroom Challenge Competitions found on the textbook’s website http://www.basicxandrobotics.com/competitions/classroom.html. Make sure the instructor is there to time your robot. Results will be posted on the www.basicxandrobotics.com. Challenge Project: Study the tutorial on multitasking with the BX-24. This is found on the textbook’s website at www.basicxandrobotics.com/tutorials/multitasking/index.html. Then, do Challenge Problem 11-4 or 11-9, but make the code for the LED or piezo buzzer run on the stack in the background. BONUS Challenge Project: Using notes from the physics students, write code that will both fire a projectile launcher and drop a target held aloft by an electromagnet. The idea is the projectile should hit the falling target. Enter the physics equations into the BX-24, which will calculate how much time after the target is dropped the ball should be launched. You will need to use multitasking techniques (to pull the projectile launcher’s trigger) and use the Timer function to determine when to pull the trigger. To turn off the electromagnet, you must send a 5V signal to a device called a relay. A relay is nothing more than an electrical switched that can be opened or closed. To stop electricity from flowing into the electromagnet, you need to open the relay’s switch by sending a high signal (1) to the relay. This is easily done with the PutPin procedure. (To turn the electromagnet back on, simply send a low signal (0) to the relay. To really make your application fool-proof, you can use If-Then statements (see Chapter 15) to verify that the projectile will not fly over the target and will hit the target before it reaches the ground. You can also use an If-Then statement to determine which should happen first: the dropping of the target or the firing of the projectile. If you do this Challenge Project your code will be displayed on my website. Page 7 of 9 Week 18 Carefully read Chapter 12:Subprograms: Procedures and Functions and perform all the steps with your own microcontroller. Do all the Self Tests. Chapter 12 Challenge Problems. #1a, 2, 20, 22, 25, 26, 47, 48, and 53 Before working on problems 47, 48, and 53, you should create some simple subprograms that cause the robot to move forward and turn a certain number of pulses. Bonus: 8, 15, and 54. Print your solution code and give it to the instructor. (An electronic copy may also be requested.) Study the tutorial on powering servomotors using the RAMB. This is found on the textbook’s website at www.basicxandrobotics.com/tutorials/servopower/index.html. Study the tutorial on how to create modular programs. This is found on the textbook’s website at www.basicxandrobotics.com/tutorials/modular/index.html. Carefully read Chapter 13: Advanced Servo Operations and perform all the steps with your own microcontroller. Do all the Self Tests. Chapter 13 Challenge Problems. #1 (Ch11 #16), #2 (Ch12 #50), 8, and 10. Print your solution code and give it to the instructor. (An electronic copy may also be requested.) Challenge Project: Have your robot compete in the “Dead Reckoning Maze Solver!” Classroom Challenge Competition found on the textbook’s website http://www.basicxandrobotics.com/competitions/classroom.html. Make sure the instructor is there to time your robot. Results will be posted on www.basicxandrobotics.com. Challenge Project: Have your robot compete in a few of the Classroom Challenge Competitions found on the textbook’s website http://www.basicxandrobotics.com/competitions/classroom.html. Some that you can try are the “Sprint Race!”, “1-2-3 Go!”, “There and Back!”, “Safe Driver!”, and “Loop Race Time Trial. Have fun! Make sure the instructor is there to time your robot. Results will be posted on www.basicxandrobotics.com. Homework: Read over Chapter 14: The Random Number Generator. You do not need to enter the steps into your own code, but you should be familiar with how the BX-24 can generate random numbers and why they may be useful. We will make use of this code in Chapter 15: If-Then and Select Case Logic Statements. Weeks 19 & 20 Carefully read Chapter 15: If-Then and Select Case Logic Statements and perform all the steps with your own microcontroller. Do all the Self Tests. Chapter 15 Challenge Problems. #1, 2, 3, 4, 5, 6, 7, 10, 11, 15, and 32. Rework #11, using Select-Case to solve. Bonus: 16, 17, and/or 28. Print your solution code and give it to the instructor. (An electronic copy may also be requested.) NB: Advanced students may be ready to compete in the qualifying firefighting competition at Penn State Abbington which usually takes place at the end of March. See http://www.basicxandrobotics.com/competitions/index.html for more details. Week 21 Pass out infrared sensor materials: IR Proximity Sensor, IR Ranger, IR mount, and mounting screws. Carefully read Chapter 16: Using an Infrared Ranger and perform all the steps and Self Tests with your own robot. Chapter 16 Challenge Problems. #1, 4, 13, 17, 23, 24, and 25. Bonus: 5, 15, 16, 19, 21, and/or 28. Print your solution code and give it to the instructor. (An electronic copy may also be requested.) Homework: Read and understand the rules to the Trinity Firefighting Competition and Hide and Seek competition. You can find these at http://www.basicxandrobotics.com/competitions/index.html or http://www.trincoll.edu/events/robot/Rules/default.asp. Page 8 of 9 Week 22 Challenge Project: Build and use two IR Proximity Sensor (see www.robodyssey.com, part number IPDK) and program your robot to follow black lines of tape on a white table. That is, make a line follower. See the Classroom Challenge Competition webpage for details. (http://www.basicxandrobotics.com/competitions/classroom.html) Make sure the instructor is there to time your robot. Results will be posted on www.basicxandrobotics.com. Challenge Project: Have your robot compete in a few of the Classroom Challenge Competitions found on the textbook’s website http://www.basicxandrobotics.com/competitions/classroom.html. Some that you can try are the “Safe Driver!” and “Tabletop Challenge: Barebones!”. Make sure the instructor is there to time your robot. Results will be posted on www.basicxandrobotics.com. Week 24 Challenge Projects: In order to get ready for Trinity’s Firefighting Competition, students will be broken into teams (not necessarily the same teams that will compete), with one member from each team solving at least one of the following challenges. (See http://www.basicxandrobotics.com/students/ for videos of past competitors.) 1. Use an IR Proximity Detector and determine when a roving robot has entered a room. The room is marked with a piece of electrical tape. The robot must be able to detect both black tape on a white floor, and white tape on a black floor. 2. Use an IR Flame Sensor to detect the location of a fire from a candle or other IR source. The robot should spin 360° looking for the brightest IR signal. 3. Use two side-looking IR Rangers to keep the roving robot parallel to a side wall. 4. Write code to have the robot navigate the actual floor plan used in the competition. 5. Build a fire extinguisher (CO2 cartridge, water spout, air fan, etc) and write code to activate the extinguisher. 6. Build a microphone to detect the high-frequency sound from a fire alarm and write code to monitor the microphone. Week 25 Continue working on the firefighting challenges. Week 26 Divide the students into teams and put all the code from the above challenges into one application using modular programming techniques. Compete at Trinity. Weeks 27 & 28 Carefully read Chapter 17: Environment Sensing Using Voltage Dividers and perform all the steps with your own microcontroller. Do all the Self Tests. Chapter 17 Challenge Problems. Use a calculator to solve the following problems: #5, 6, 7, 8, and 9. Use the BX-24 to solve the following problems: #1, 15, and 20. Bonus: 16 and 27. Print your solution code and give it to the instructor. (An electronic copy may also be requested.) Conduct science experiments with the robots. Weeks 29, 30, & 31 Design and build soccer-playing robots or introduce Visual Basic Programming Compete in Robot Madness. Week 32 Prepare robots for Senior Assembly. Page 9 of 9