This course includes resources provided by the following:
LEGO Education
CS-STEM Network from Carnegie Mellon University
EV3-Scratch documentation provided by Raphael Holzer
Joe Olayvar & Evelyn Lindberg in association with the Washington State Library
🌏 Click here to access the LEGO Education website.
📑 Click here to access the EV3-Scratch documentation.
🎓 Click here to access the online EV3 course from CS2N.
📕 Click here to access the LEGO Mindstorms EV3 Programming Basics document in its entirety.
▶️ Click here to access the entire LEGO Mindstorms EV3 YouTube playlist from the Washington State Library.
In the Decisions lessons, you will learn how to program the robot to make decisions and repeat sequences of commands.
Install It
Before continuing, ensure that your computer has the EV3 Classroom app installed.
🔧 Build It
Before you continue, ensure that you have completed the following builds:
Color Cube (aka Cuboid)
Base Unit (aka Driving Base)
Ultrasonic Sensor
Medium Motor Arm
🔁 Introduction to Loops
🎓 Learn It
Carefully read and/or watch the instructional media and respond to the related questions.
Question 1
1.
Question 2
2.
Question 3
3.
🏆Mini-Challenge:
⏹ Square Lap 1
Program a looped behavior for the robot to travel around a box, forever!
Using any box, program the robot to go around it forever. Using a loop is highly recommended.
100
20
20
Question 7
7.
Question 8
8.
Question 9
9.
🏆Mini-Challenge:
⏹ Square Lap 2
Program a looped behavior for the robot to travel around a box exactly 1 time!
Same as the previous challenge, except this time program the robot to go around the box exactly 1 time.
100
20
20
Question 13
13.
Question 14
14.
🏆Mini-Challenge:
⏹ Square Lap 3
Program a looped behavior for the robot to go around a box until it reaches an obstacle!
Same as the previous two challenges, but now there is an object placed on one side of the box. Program the robot to go around the box until it spots the object. If there is no object, then the robot will go around the box forever.
100
20
20
100
20
20
Question 20
20.
10
Question 21
21.
🧠 Retrieval Practice:
Summarize the content of this lesson. What topics, ideas, and vocabulary were introduced?
Repetitive tasks can be accomplished efficiently by...
Manually controlling the robot
Writing very long programs
Repeating behaviors within a program
Writing multiple programs
🔁 Looped Movements
In this lesson, you will use a Loop to repeat the same sequence of blocks multiple times.
Robot Configuration: Ultrasonic Drive Base
Ultrasonic Sensor Configuration
For this chapter, the Ultrasonic Sensor is required to complete sections of this chapter as well for the final challenge.
Ultrasonic Sensor Driving Base build instructions: https://drive.google.com/file/d/1FuwryZIW-l5rsP1bhp29RKxoiavl0WfJ/view?usp=share_link
Step 1: Create Project
Start with a new project and program.
Step 2: Add Move Blocks
Start by adding two “move [forward] for [1] [rotations]” blocks to the program.We will write this program in two phases:
First, we will write a behavior that makes the robot move forward then backward.📷Forward - Backward
Then, we will add a Loop to make that sequence run over and over again.📷Looping Behavior
Step 3: Modify Second Block
Leave the first one set to move forward for one rotation, but change the second one to move backward, by selecting “backward” in the drop-down menu.
Step 4: Rename Program
Rename this program as "MoveLoop", even though it's not looped yet.
Step 5: Download and Run Program
Download and run your program, and you can see the robot move forward, then backward as expected.
This works because the program runs the first block, and then moves to the second block and runs it. Then reaches the end of the program
Step 6: Add Loop to Program
The Loop you are about to add to your program will go around the two blocks you have now and will let them run.
Instead of hitting the end of the program after the second Move, the program will hit the loop instead.
The loop will take the program's "flow" and send it back to the beginning of the loop where it will pick up and begin running again (through the blocks inside the loop).
Go to the orange Control palette, and grab a “forever” block. Drag it into your program, and add let it wrap around the move blocks.
Step 7: Download and Run
Now download the program and run it.
What does the Loop do?
Choose between two different possible sets of commands to run
Run all the programs on the robot in a continuous cycle
Send the program "flow" back to an earlier point in the program, causing it to repeat some instructions
Repeat a branching decision quickly, to enable continuous control of the robot
How do you add a loop to a program?
Select the blocks you want to put inside the Loop, then right-click and choose "Place in Loop"
Go to the yellow Events palette, right click on the loop block, and select “Use loop”
Right-click in an empty area and choose "Make Loop" from the menu that appears
Go to the orange Control palette, drag the loop block to your program, and wrap it around the behaviors you want to be repeated
Question 5
5.
📸 Document It: Capture a screenshot (or multiple screenshots) of your completed program and upload or paste it onto the Formative canvas.
Question 6
6.
⬆️ Upload It: Upload your completed program.
🧮️ Loop with Count Control
In this lesson, instead of looping forever, we will use a “count” loop to make the Loop repeat only a certain number of times.
Step 1: Duplicate Project
First, we want to start from where we left off with the “MoveLoop” program. We don’t want to overwrite that program or change it, so we need to duplicate it to make another copy.
Start by going to the Home menu, and then clicking on the “SHOW ALL” link.
From here, you can click “Edit Projects”.
Click on the MoveLoop project to put a check on it.
Now, we need to click on “DUPLICATE” at the bottom of the window. This will create a duplicate at the top of the list.
Click on “Edit Projects” again to stop editing the projects.
Now click on the newly created Project to start Editing it.
About the MoveLoop program
This program uses a Loop to send Program Flow back to an earlier point in the program, every time it reaches the end of the Loop. This makes the program repeat forever, as the Flow is always sent back.
Instead of always sending the Flow back, however, the Loop can be set to send it back conditionally – only send Flow back under certain conditions, otherwise, let the Flow leave the loop. You can think of this as the right-hand side of the Loop Block behaving as a gatekeeper. When the Flow arrives, it will ask a question, and, depending on the answer to that question, will either send the Flow back or let it pass through.
Step 2: Remove Forever Loop
Instead of using the “forever” loop, we will instead use the “repeat” loop. Drag the forever loop outside of the stack.
Step 3: Add Repeat Block
Now drag the “repeat” block into your program.
Step 4: Drag Move Blocks Into Repeat
Move the “move” blocks out of the forever loop by dragging the top-most move block, and placing it inside the “repeat” loop.
This tells the robot to repeat the blocks inside (the move blocks) 10 times.
Step 5: Remove Forever Loop
Now that we aren’t using it anymore, we can remove the “forever” loop.
Step 6: Modify Count
Now, change the number Count to 5 so that the loop repeats 5 times.
Step 7: Rename Project
Rename your Project as "MoveLoopCount".
Step 8: Download and Run
Download and run your program.
As before, your robot will move forward and backward repeatedly as the program flow is sent back through the same blocks, but after 5 repetitions of the forward-back cycle, the robot will stop.
In Count Mode, the Loop will only send Flow back conditionally.
The first four times the program reaches the end of the Loop, it is sent back.
On the fifth time, however, the Loop lets the flow through, where it reaches the end of the program.
A Repeat Loop block will send the Program Flow back…
Every time, forever
If the Touch Sensor is not pressed when the Flow reaches the end of the Loop
Only a certain number of times
If there is nothing after the Loop
What does it mean for a Loop to be "Conditional"?
The code runs every time, no matter what
The entire Loop can be skipped under certain conditions
It only sends the Flow back under certain conditions
The Loop runs faster after it is trained, or "conditioned"
What is the "condition" in this Loop based on?
The number of rotations the robot has traveled
The value of the Touch Sensor
The number of seconds the Loop has been running
The number of times the Loop has sent the Flow back
Question 11
11.
📸 Document It: Capture a screenshot (or multiple screenshots) of your completed program and upload or paste it onto the Formative canvas.
Question 12
12.
⬆️ Upload It: Upload your completed program.
📡 Loop with Sensor Control
In this lesson, you will set the Loop to use a Sensor to decide whether to send Program Flow back or let it pass.
Step 1: Duplicate MoveLoopCount
Start by duplicating your "MoveLoopCount" project from earlier.
Step 2: Open Duplicated Project
Open up the new project by clicking on it.
Step 3: Remove Repeat
We will be replacing the “repeat” loop with “repeat until” so that we can control the loop with a sensor.
First, let’s remove the “repeat” loop.
Step 4: Add Repeat Until
Insert a “repeat until” loop into the program. This has a space to put a “condition” inside that will determine when to exit the loop.
Step 5: Drag Move Blocks
Drag the move blocks from the “repeat” block into the “repeat until” block.
Step 6: Remove Repeat Block
Get rid of the Repeat block by dragging it over to the menu on the left.
Step 7: Add Ultrasonic Sensor Block
Add an Ultrasonic Sensor “is distance” block into the placeholder in the “repeat until” block.
Step 8: Modify Threshold
You can leave the comparison as less than (<).
Set the Threshold Value to 30.
Step 9: Rename Program
Rename your program as “MoveLoopUltrasonic”.
Step 10: Download and Run
Run your program, then, while it’s running, place your hand in front of the robot, less than 30 centimeters in front of the Ultrasonic Sensor.
The robot stops... eventually!
Explanation: Program Flow
The “repeat until” block will first look at the condition; if it’s false, it will go into the loop and start running the stuff inside until it is true.
The Robot won't stop while moving forward, or while moving backward…
However, it will stop at the end of the forward-backward cycle.
Why? Because of Program Flow. When the program is running the Forward block, the Forward block has control of the program, not the Loop. That, in turn, means it is not checking the Sensor.
The same is true when the Backward movement has control. The only time the Sensor is checked is when the Program Flow is at the beginning of the Loop, and – in that instant – uses the Sensor to determine whether to send the Flow back for another round or let it through.
When does a Sensor Loop check the sensor?
At the end of the Loop only
At the beginning of the Loop
Continuously while inside the Loop
At the end of every block within the Loop
When the Loop is set to Ultrasonic Sensor as shown below, what "condition" will cause it to pass Program Flow through (instead of sending it back)?
The program repeats itself 30 times
The robot sees something within 30 centimeters immediately after moving forward
The robot sees something within 30 centimeters immediately after backing up
The robot sees something farther than 30 centimeters away
Question 16
16.
📸 Document It: Capture a screenshot (or multiple screenshots) of your completed program and upload or paste it onto the Formative canvas.
Question 17
17.
⬆️ Upload It: Upload your completed program.
🏆Challenge:
🪴Container Handling
Challenge Overview
For this challenge, use a Loop to program your robot to move a number of objects into a zone. The objects are placed at irregular intervals, so you will have to use a sensor to detect each one. The robot should then use its arm to turn around with the object back into the zone – marked with a red outline – and release it there.
Challenge Details
Rules and Procedures:
Use four rectangular objects to represent the four containers. These can be built with LEGO parts or cut from cardboard boxes.
The four objects must be placed in a straight line at the start of each run, with a flat side facing the robot, but their distance from each other should be varied randomly.
The drop-off area for the containers should be marked with red electrical tape. If red is not available, any color may be substituted as long as it is different from the color of the table surface.
A container with no parts hanging outside the loading area may be removed by hand to make room for the next container.
The robot must return all four containers reliably to the loading area, regardless of where they were located along the initial line.
Hints:
Use a Loop to repeat similar portions of the behavior. You should not have to write all four runs separately!
If the robot needs to perform any actions prior to the loop, simply place them before the Loop in the program.
If the robot needs to perform any actions after the loop, simply place them after the Loop in the program.
Use Sensors to help the robot locate both the containers and the loading zone, as the exact distances required will be different each time the robot runs!
🌐 A virtual version of this challenge is available HERE.
Question 19
19.
📸 Document It: Capture a screenshot (or multiple screenshots) of your completed program and upload or paste it onto the Formative canvas.