+ All Categories
Home > Documents > Gaussian beams - Test Page for Apache Installation

Gaussian beams - Test Page for Apache Installation

Date post: 03-Feb-2022
Category:
Upload: others
View: 10 times
Download: 0 times
Share this document with a friend
12
Programming Finch Robots with Scratch The Finch robot is a powerful tool for computer science education. It is the product of a four-year study at Carnegie Mellon University’s CREATE lab and is designed to support an engaging introduction to the art of programming. We will be using Scratch to program the Finch robot and learn about its various features. We will write interactive programs making use of the Finch’s ability to move and sense its environment (obstacles, light, and temperature). Getting Started with Finch slides Go to “More Blocks”
Transcript
Page 1: Gaussian beams - Test Page for Apache Installation

Programming Finch Robots with Scratch

The Finch robot is a powerful tool for computer science education. It is the product of a four-year study at Carnegie

Mellon University’s CREATE lab and is designed to support an engaging introduction to the art of programming.

We will be using Scratch to program the Finch robot and learn about its various features. We will write interactive

programs making use of the Finch’s ability to move and sense its environment (obstacles, light, and temperature).

Getting Started with Finch slides

Go to “More Blocks”

Page 2: Gaussian beams - Test Page for Apache Installation

Control Blocks

Movement Sets the power to the left and right wheels. The range is -100 to 100.

Light Sets the color of the Finch’s beak. The R, G, and B arguments control the intensity of the red, green, and blue elements in the Finch’s beak. The range is 0 to 100 for each color.

Buzz Sound Play’s the Finch’s buzzer with a sound of the frequency specified for the time specified. Range is 20 to 20,000 for frequency. Note: 1,000 ms is equal to 1 second

Speak Software that comes with the Finch also allows the programmer to control computer speakers so as to play synthesized speech, wav files, or musical notes.

Sensor Blocks A SENSOR is a device that detects and responds to some type of input from the physical environment.

Temperature Returns the value of the finch’s temperature sensor in Celcius

Obstacle Detection These are boolean or predicate blocks, returning true if an object i s 1” to 4” from the sensor and false otherwise

Light Detection Returns the intensity of light hitting the left or right light sensor. The values are in a range from 0 to 100 where 0 is total darkness and 100 is saturation of the sensor.

Accelerometer Returns the Finch’s acceleration values. The primary use of the accelerometer is to detect the direction of gravity, so as to know how the Finch is oriented (flat on the ground, upright, etc). It is also possible to detect spikes in acceleration caused by tapping or shaking the Finch.

Orientation Returns the current orientation of the Finch. Possible values are: Level, Beak_Up, Beak_Down, In_Between, Left_Wing_Down, Right_Wing_Down

Page 3: Gaussian beams - Test Page for Apache Installation

Activity 1: I’m the Finch. Explore What I Can Do!

In this activity we will explore various features including movement, obstacle detection, beak coloring, and

temperature and orientation status.

Emergency Stop Before running a new script, you will want to press the “space bar” to stop the previous script execution.

Most industrial equipment will incorporate an emergency STOP button for SAFETY. Press “space bar” to stop all scripts immediately. Safety first!!

Subroutine Next Create subroutines to re-use code and avoid repeating yourself.

A SUBROUTINE is a program script that you plan on using over and over. The subroutine script is assigned to a single block and given a name like NEXT. Anytime you use the block NEXT the full subroutine will run in in its place.

Tips:

Under “More Blocks” click “Make Block” to create your “define” block

Page 4: Gaussian beams - Test Page for Apache Installation

Variable Use variables to store values that you are going to refer to more than once or that you might want to vary the value

of.

Variables can be set to specific values anywhere in your project. When that variable NAME (ex: SPEED) is used in your script the NAME is replaced by the variable’s CURRENT VALUE (ex: 75). You will use these blocks later in scripts you write for your program.

Tips: Under “Data” click “Make a Variable” and create the following variables:

Here’s a close-up of the CURRENT VALUE for the TEMP variable:

Page 5: Gaussian beams - Test Page for Apache Installation

Move Feature Make the finch move!

What is the difference between the “Speak” and “Say” commands? What happens if you change wait to 2? Aren’t you glad you made the NEXT subroutine? Why? Now try removing the SPEED variable and put in different values for the left and right wheels:

left right

0 100

50 100

-100 100

-100 -25

Obstacle Detection Feature and Boolean Functions Program the finch to detect obstacles!

A SENSOR is a device that detects and responds to some type of input from the physical environment. The specific input could be light, heat, motion, moisture, pressure, or any one of a great number of other environmental phenomena. The Finch has a left and right infrared sensor for “eyes”. The Finch left or right obstacle sensor “returns” a value of 1 for “true or yes” and a value of 0 for “false or no”

Examine the WAIT command block. If the Finch does NOT sense a left OR right obstacle what is the BOOLEAN value “returned to” the WAIT command? What is the value needed by the WAIT command to move to the next step of the script? Are you still glad you created the NEXT subroutine? This is a GLOBAL subroutine since it works in any script that uses it within the whole project. Is SPEED a GLOBAL variable?

Page 6: Gaussian beams - Test Page for Apache Installation

Beak Coloring Feature Make the beak change colors!

Tri Color LED’s have three LED’s in one housing. RED - GREEN and BLUE. The input for each LED can range from 0 (no brightness) to 100 (full brightness) How did we generate what appears to be YELLOW? Where did the RED and GREEN get mixed to appear YELLOW? What color will RED and BLUE appear to be? Go ahead and try it out. Now GREEN and BLUE? Now RED - GREEN and BLUE?

Looking back, do you see an opportunity to

create another subroutine to clean up your

code? Perhaps try the following:

Page 7: Gaussian beams - Test Page for Apache Installation

Temperature & Orientation Status Feature Check the status of the Finch’s temperature and orientation.

Two more sensors on the Finch are the ones for temperature and one orientation.

To sense temperature the Finch uses a Thermistor. A Thermistor is a resistor that changes its resistance

depending on how hot or cold it is. This change in resistance is converted by the Finch microcontroller

into a value representing degrees centigrade °C.

To sense orientation the Finch uses an Accelerometer. The Finch accelerometer senses the pull or force

of gravity along the 3 axes of the Finch’s body. Top to Bottom, Front to Back and Left to Right. The Finch

microcontroller converts the 3 accelerometer signals into 7 different output values representing the

orientation of the Finch. The control block Finch Orientation is set to:

LEVEL, UPSIDE_DOWN, BEAK_UP, BEAK_DOWN, RIGHT_WING_DOWN, LEFT_WING_DOWN and

IN_BETWEEN. NOTE: The ( _ ) symbol is written as or pronounced UNDERSCORE. Try moving the Finch

around and see if you can find the right position for each of the 7 Finch Orientation values.

Congratulations!! You now know FINCH basics.

Page 8: Gaussian beams - Test Page for Apache Installation

Activity 2: Detect Light

In this activity, the finch’s beak will turn red if its left light sensor is sensing the flashlight, else,

if it’s right light sensor is sensing the flashlight, its beak will turn green, if neither light sensor senses the flashlight, it

will turn blue.

#1 If Finch left light detects the flash light, its beak turns red. This conditional logic is implemented with an if-else block. The if condition is a comparison expression Finch left light > 25 which evaluates to either true or false, depending on what the sensor reading is. Note that the numerical value 25 was chosen to be bigger than what the Finch currently sees: 11 with its left eye and 9 with its right eye. Depending on where your Finch is right now, these readings could be different.

#2 Now, it’s your turn to write the rest of the program! On the else branch, write code to test the Finch’s right eye. What you want to accomplish is another conditional! In simple words, the logic goes like this:

If the Finch right light is sensing the flashlight, then turn

its beak green; else, make it blue.

Solution code:

Page 9: Gaussian beams - Test Page for Apache Installation

Activity 3: Teach Scratch About Finch Orientation In this activity, the finch will light up different colors depending on its orientation.

Start with an if-else block.

Get this block from the Operators category. This is a test for equality or comparison block. If we plug 2 numbers in it, it will tell us true if the numbers are equal OR false if the numbers are not equal. All hexagon shaped blocks will evaluate to a boolean value: true or false.

From the More category, get the Finch Orientation block and snap it into the first plug of <[] =[]>. In the second plug type in Level. When is this comparison true? When is it false?

Let’s command the Finch to turn its beak green if its orientation is level. And let’s command our Scratch sprite to set its color effect to Green (use 50 to get a green color effect). Finally, point the Scratch sprite to right (direction 90).

Place the if-else into forever and attach forever to when green flag clicked. Add the when space key pressed event handler to stop the program for the Finch. Test out the program!

Page 10: Gaussian beams - Test Page for Apache Installation

Next step is to program the else branch. We want this time to test if the Finch orientation is Beak_Up. If it is, we’ll do something very similar. Instead of green, let’s use red to signal this orientation. And the sprite will point in the up direction. Now’s it’s your turn! Add one more if-else block to program If Beak_Down then program similar behavior as before. Else … choose to do whatever you want. Your creativity has no limits! Notice that if you are here, the choices left for the Finch orientation are: In_Between, Right_Wing_Down, and Left_Wing_Down.

Page 11: Gaussian beams - Test Page for Apache Installation

Activity 4: Detect Obstacles and Count Steps

This code has two if blocks. The first if block reports true if there is no obstacle. In that case, the Finch moves forward

for one tenth of the second. The Sprite copies what the Finch does and makes 2 steps.

The second if block reports true if there is an obstacle. In that case, the Finch stops, buzzes for half a second and waits

for half of the tenth of a second and moves backwards for 1 second. The Sprite copies what the Finch does and makes

20 steps backwards.

These two tests and their actions repeat forever.

#1 What is the condition of the first if? What does it mean? #2 Find the operators or and not in the Operators category. Use the ? tool to learn more about them. #3 The blue move blocks are used to simulate the Finch behavior with the Scratch sprite. For example, when the Finch is commanded to stop with Move Finch left: 0 right: 0 the sprite is commanded to stop with move 0 steps. Same thing is done with moving forward and moving backwards. #4 Why do we have wait blocks in the code? This is to instruct the Finch how long a move should be, AFTER WHICH the if test gets repeated again in the forever loop. Note that the timing of the forward move is set to 0.1 seconds. If the timing is too long and the Finch hits an obstacle without a chance to do the testing, then the Finch might get stuck in an infinite loop of forward moves!

Page 12: Gaussian beams - Test Page for Apache Installation

Now let’s make a variable that counts the number of steps our Sprite takes (variable blocks are in the data section) if you click on the show variable block, you’ll see a display of the variable on the stage over the sprite

simply insert the change countStep block after the move 2 step block, and you’ve got a variable that’ll keep count of how many steps the sprite takes

Now it’s Creative Finch Project Time!

Apply what you’ve learned so far! Write a scratch script that makes your finch do something whenever it

encounters another finch (say a greeting, flash a color, do a dance, it’s up to you). Since finches can’t

differentiate between obstacles and other finches, using the left/right obstacle block is alright. Program

keyboard controls for your finch (ex. forward arrow to move forward, right arrow to turn) so you can manually

control your finch on the “dance floor”.

The only requirement is that the finch should keep count of how many obstacles/finches it encounters. At the

end of the project period, we will place all finches in a circle and watch them interact. Have fun!!


Recommended