the finch robot and the while loop
DESCRIPTION
The Finch Robot and the While Loop. Pepper. The Robot. Developed by Carnegie Mellon students to teach CS Supports many compilers, including Java Web site: http://www.finchrobot.com/ Why – Illustrate while and do /while loops with physical example - PowerPoint PPT PresentationTRANSCRIPT
THE FINCH ROBOT AND THE WHILE LOOPPepper
THE ROBOT Developed by Carnegie Mellon students to teach
CS Supports many compilers, including Java Web site: http://www.finchrobot.com/ Why – Illustrate while and do /while loops with
physical example Why 2: See how hardware and physical actions
can be controlled with code Lab group practice Extra: One robot available for creating game
Will need to learn methods May need to debug issues Will it help you learn for the final?
HARDWARE Input Sensors
Obstacles Light Accelerometer
(how fast is it going)
Temperature Output
Wheels turn LED lights Speaker
Power Long USB Cord
INSTALLING
Download Java package from http://www.finchrobot.com/Creating,%20Compiling,%20and%20Running%20Programs%20for%20Finch/bluej
Place it in the folder you want to use Unzip it Open sample project in sourceFiles bluej.pkg Create your own package inside sample
project (or add jar file finch.jar to bluej via preferences
Or add finch.jar to the +libs folder inside SourceFiles)
MAKE A FINCH CONTROLLER
Bring in the knowledge: import
edu.cmu.ri.createlab.terk.robot.finch.Finch; Create a finch object that knows finch
commands: Finch myFinch = new Finch();
Always end with quit and exit: myFinch.quit(); System.exit(0);
CONTROLLING COMMANDS
Set Finch Beak Color: myFinch.setLED(red,green,blue); // 0 to 255
Make Finch Speak: myFinch.saySomething("The Finch will say
this."); Make Finch Move:
myFinch.setWheelVelocities(left,right,time)// -255 to 255 & time is in milliseconds // negative number rolls backwards// hold the cord or it may have difficulty
SIMPLE PROGRAM – package Pepper; import
edu.cmu.ri.createlab.terk.robot.finch.Finch; public class FinchSimple { public static void main(final String[] args) { // Instantiating the Finch object Finch myFinch = new Finch(); myFinch.setWheelVelocities(255,255,1000); myFinch.saySomething(“I am now All
Done"); // Always end your program myFinch.quit(); System.exit(0); } }
GET FINCH SENSE INFORMATION
Obstacles: All true/false isObstacle() isObstacleLeftSide() isObstacleRightSide()
Light: All true/false, but using light level threshold. Returns true if less than the threshold isRightLightSensor(10) isLeftLightSensor(10)
In dark, it will be true up to about 4 In light, it will be true up to about 40 Ex: if (myFinch.isRightLightSensor(10) == true)
{ System.out.println(“It is light out”);}else {System.out.println(“It is dark out”);}
MAKE IT DO AN ACTION WHILE A CONDITION IS TRUE
Keep moving forward until it senses an obstacle
while ( myFinch.isObstacle() == false ){ myFinch.setWheelVelocities(255,255,200);
} // then back upmyFinch.setWheelVelocities(-255,-255,1000);
ANOTHER - MAKE IT DO AN ACTION WHILE A CONDITION IS TRUE
Spin until the lights turn off
while (myFinch.isRightLightSensor(10) == true){ myFinch.setWheelVelocities(255,-255,1000);
} // when the lights are out, this will be false// when the lights are on, this will be true// could say spin while lights are on// WILL NOT SPIN AT ALL IF LIGHTS OFF
DO WHILE
Spin at least once, and then keep spinning until the lights turn off
do { myFinch.setWheelVelocities(255,-
255,1000); } while (myFinch.isRightLightSensor(10) ==
true);
// run with lights off – see one spin first
GET ORIENTATION INFO
Orientation: All true/false isFinchLevel() isFinchUpsideDown() isBeakDown() isBeakUp() isLeftWingDown() isRightWingDown()
YOUR TAKEAWAY
Difference between while and do while Creating an object of a class gives your
program powerful tools A sense of how hardware can be controlled
by code Perhaps a desire to code your game using
this little robot
YOUR TURN Probably not needed, but see finch.jar in
preferences Download java finch package
http://www.finchrobot.com/Creating,%20Compiling,%20and%20Running%20Programs%20for%20Finch/bluej
New class Import above class:
import edu.cmu.ri.createlab.terk.robot.finch.Finch; Inside main method, create a finch object
Finch myFinch = new Finch(); Close your finch at the end of main
myFinch.quit(); System.exit(0);
Add code to make it move right and test. Then make it do something until it hits a wall.