How Far, Not Just Which Way: The Folding Fan Robot
60 minutes · Ages 9–16 · Model: Folding Fan Robot
What you are building 3 min
The Folding Fan Robot: a machine that holds a paper fan and waves it, the way a person does on a hot afternoon.
Every model you have built so far turns. The Ferris Wheel turned round and round. The Gear Shooter spun up and let go. Even the Pirate Ship, swinging both ways, was happy to keep going.
This one cannot. A fan on the end of an arm has somewhere it stops. Push past that and the arm hits the frame. So today the question stops being which way the motor turns and becomes how far.
By the end, your robot will fan the air with a steady, repeated stroke that never once bangs into itself.
In the real world 5 min
Where you have seen it
A folding fan is a row of thin ribs joined at one pin, with paper or silk stretched across them. It has been made that way in China and Japan for over a thousand years. Malaysia is hot all year, so the kipas is not a museum piece here — you will see one at a wedding, at a temple, and in the hand of anyone queueing outside in the afternoon.
Folding fans opened out in a fan dance — the ribs all turn about one pin. Photo: AngMoKio / Wikimedia Commons (CC BY-SA 2.5).
Why it is built that way
A fan does not make air. It moves air that is already there. Sweep a wide, flat surface sideways and you shove a slab of air along with it — and that moving air carries heat off your skin, which is what feels cool.
Which is why a fan is waved back and forth rather than spun. A stroke one way pushes the air; the return stroke sets up the next push. Wide and slow moves more air than narrow and frantic, and the arm has to reverse before your wrist runs out of room.
What would go wrong without it
Your wrist knows where to stop. A motor does not. Tell one to turn a whole rotation on an arm that can only sweep a quarter of one, and it will keep pulling after the arm has already hit the frame.
Nothing warns you. The motor whines, the gears click, and either a beam pops off or a tooth strips. This is the most common way a good build gets broken by a bad number.
A mechanism with an end needs a movement with an end. Saying how far is not a detail — it is what keeps the model in one piece.
The main concept — degrees 6 min
One full turn of a motor is 360 degrees. Any movement smaller than a turn is easiest to say in degrees.
The motor block has a unit dropdown. It is the box you have been leaving alone until now, and it holds three choices.
Block
What it means
[A v] run [clockwise v] for (1) [rotations v] :: motors
One whole turn of the shaft. Good for wheels and wheels only keep going.
[A v] run [clockwise v] for (90) [degrees v] :: motors
A quarter of a turn. Good for arms, gates, jaws — anything that stops somewhere.
[A v] run [clockwise v] for (2) [seconds v] :: motors
Turn for a length of time. How far it gets depends on the speed, so it is the least exact of the three.
The numbers you will want most often, worth knowing by heart: 360° is a full turn, 180° is half, 90° is a quarter, 45° is an eighth. And degrees do not stop at 360 — 720 degrees is simply two turns, which is a fine way to write it if that is how you are thinking about the movement.
The program begins. Nothing has turned yet, so both counters read zero.Turning. Watch the two motor counters climb together — they are one movement counted two ways.Exactly 2 rotations, exactly 720°. The big gear has turned only two thirds of a turn.Finished — it will run again in a moment.
stopped
The two motor read-outs are the same measurement — 1 rotation is 360°. Use whichever makes the number easier to read.
Rotations and degrees measure the same thing in different sized steps. Use rotations when the movement goes round; use degrees when it stops somewhere.
▶Rotations, degrees, and the Large MotorThe full reference for measuring a movement, and for the motor this model uses. Open it if either is not clear yet.Show meHide
ComponentMotion5 min
Rotations and degrees
There are two ways to tell an EV3 motor how much to move: give it a length of time, or give it an amount of turn. Only the second one is repeatable, and that difference decides whether a machine works reliably or only sometimes.
One rotation means one full turn of this shaft — not one turn of the wheel or gear it drives. Gearing between the two changes how far the mechanism actually moves.
Blocks reference
Block
What it does
[A v] run [clockwise v] for (1) [rotations v] :: motors
One full turn of the motor shaft, then stop. The program waits for it.
[A v] run [clockwise v] for (180) [degrees v] :: motors
Half a turn. 360 degrees is one rotation.
Count it as it turns
The counters below tick up in step with the shaft, so you can watch a rotation being counted rather than take it on trust.
The program begins. Nothing has turned yet, so both counters read zero.Turning. Watch the two motor counters climb together — they are one movement counted two ways.Exactly 2 rotations, exactly 720°. The big gear has turned only two thirds of a turn.Finished — it will run again in a moment.
stopped
The two motor read-outs are the same measurement — 1 rotation is 360°. Use whichever makes the number easier to read.
Rotations or degrees?
Notice that the two motor counters finish together: 2.00 rotations and 720° are the same instant, because they are the same measurement in different units. So pick whichever makes the number easier to read. A winch that needs eight full turns is clearest in rotations. A gate that lifts a quarter turn is clearest in degrees — 90 rather than 0.25.
Gearing changes the answer
The third counter is the one that catches people out. The block counts turns of the motor, not of the thing it drives — and the gear in the demo is three times the size, so two motor rotations move it only 0.67 of a turn. Ask for two rotations and the mechanism does not move two rotations’ worth unless the gearing is one to one.
That is why a number that works on one build has to be retuned when the gearing changes — the program is right, the mechanism is different.
Why it matters
A printer feeds paper an exact distance; a lift stops level with the floor; a robot arm returns to the same place a thousand times. None of that is possible by timing a motor — they all count turns.
ComponentMotion4 min
The Large Motor
The Large Motor is the bigger of the two EV3 motors. It turns more slowly than the Medium Motor but pushes far harder, which is why it drives wheels and lifts loads. If a mechanism struggles or stalls with a Medium Motor, this is usually the answer.
Large Motor
Medium Motor
The two motors at the same scale. The Large Motor is visibly bigger and heavier — that extra size is what gives it more turning force and less speed.
Blocks reference
Block
What it does
[B v] run [clockwise v] for (3) [rotations v] :: motors
Turns the motor a measured amount, then stops.
[B v] run [clockwise v] for (2) [seconds v] :: motors
Turns it for a length of time rather than a distance, then stops — however far the shaft actually got.
[B v] set speed to (40) % :: motors
Sets how fast the next movement will be.
[B v] start motor [clockwise v] :: motors
Starts it turning and carries straight on.
Watch them race, then watch them lift
Give both motors the same program and the same arm. With nothing on the arm the Medium Motor wins easily — which is why it is tempting to treat it as simply the better motor. Then the demo hangs a weight on both arms and runs it again.
when program starts
A run clockwise for 1rotations
and on the Large Motor, only the port changes
B run clockwise for 1rotations
0%medium lifted0%large liftednoneload
Medium: not enough forceLarge: slower, but it lifts
) : clock.step === 1 ? (
With nothing to lift, the Medium Motor is quicker
The same program, the same arm, one on each motor. Nothing to lift yet.No load: the Medium Motor is clearly the quicker of the two.Now hang a heavy weight on both arms and run exactly the same program.The Medium Motor stalls a third of the way up. The Large Motor keeps lifting.Same program, same weight — the motor was the difference.Finished — it will run again in a moment.
at rest
Turning the speed up would not rescue the Medium Motor here — a stalled motor needs more force, which means gearing it down or using the Large Motor.
That is the whole difference. The Medium Motor is quicker; the Large Motor is stronger. A motor that cannot produce enough force does not move slowly — it stops altogether and strains, which is the buzzing, going-nowhere failure almost every LEGO builder meets sooner or later.
A stalled Large Motor hangs the program too
Being stronger buys the Large Motor a bigger load, not an infinite one. Every winch runs out of cable and every lift reaches the top of its rails, and when a motor arrives at a limit it stalls: the shaft stops turning and the motor sits there straining.
That is a problem for the program, not just the mechanism. run for (3) rotations does not finish when three rotations’ worth of time has gone by — it finishes when the shaft has actually turned three times. A winch that reaches the top after two and a half will never report three, so the block waits, and every block after it is unreachable. Nothing crashes. The motor keeps pushing and the rest of the program simply never happens.
The third setting in that dropdown is the way out. for () seconds drives the motor for a duration and then stops regardless, so it always finishes and the program always moves on. Drive into a limit slowly, for a comfortably long time, and then call that position zero:
when program starts :: events hat
[B v] set speed to (30) % :: motors
[B v] run [counterclockwise v] for (3) [seconds v] :: motors
[B v] reset degrees counted :: motors
The lift ends up against its own stop, the encoder is zeroed there, and every measured move afterwards starts from a place you know. The rule is the same for both motors: if the movement ends against something solid, run for seconds; if it ends somewhere in the middle, measure it. The Medium Motor module has the animation for it — see The Medium Motor, which is where this bites hardest, because a Medium Motor is usually the one doing the lifting.
Which motor for which job
Large Motor — wheels, winches, anything lifting weight. Strong, slower. Normally ports B and C.
Medium Motor — arms, gates, jaws, pointers. Quick, lighter. Normally ports A and D.
The blocks are identical apart from the port letter, so swapping one motor for the other is a build change, not a programming change.
Why it matters
Real machines match the motor to the load. A lift uses a powerful, slow motor; the button panel beside it uses tiny ones. Choosing the wrong size is the most common reason a LEGO mechanism whines but does not move.
Say this back before moving on: “A whole turn is 360 degrees, so if I want less than a turn I ask for degrees.”
What’s in this build 4 min
Look at your model. Find everything with a cable. There should be exactly two electronic parts, and you can name them both.
Part
What it is doing here
EV3 Intelligent Brick
Runs the program and powers the motor. It is also the heaviest thing in the build, so it is what stops the robot walking itself off the table as it fans.
Large Motor
Swings the arm that carries the fan. Check yours: the Large Motor is the one with the big red drum on the end and cooling slots down the body.
Find the limit before you power anything
This is the most important two minutes in the lesson, and it happens with the Brick switched off.
Turn the fan arm gently by hand, one way, until it will not go further. Stop. Do not force it.
Now turn it gently the other way until it stops again.
That sweep between the two stops is everything your motor is allowed to do. Look at it. Is it about a quarter of a circle? Less? More?
Write your answer down in degrees. A guess is fine — you are about to test it.
Never find the limit with the motor. Find it with your fingers, where you can feel the resistance and stop. The motor cannot feel anything and will not stop.
Ports — and the rule 4 min
Sensors go in ports 1, 2, 3, 4. Motors go in ports A, B, C, D. They are not interchangeable, and nothing will tell you politely if you swap them.
Part
Port
Why this one
Large Motor (swings the fan arm)
A
One motor doing a job of its own takes A. Every program on this page says A. If yours is somewhere else, move the cable rather than editing half the blocks.
Sensors
none
This model has none. All four numbered ports stay empty today.
Check your own build now:
Motor cable in port A — a letter, not a number.
Set the arm roughly in the middle of its sweep before you start. Starting at a limit means the very first movement has nowhere to go.
Is the fan clipped on firmly? A fan that flies off mid-stroke is a loose pin, not a program fault.
Connect the Brick 4 min
Two routes, and either is fine. USB is the reliable one and the one to fall back on when a room’s Bluetooth is busy; Bluetooth leaves the robot free to move, which some models need.
▶How to connect the BrickUSB and Bluetooth, step by step, with a photograph of every screen. Open it if you have not done this before — or if pairing is not working.Show meHide
USB — the reliable one
Switch the Brick on with the dark grey centre button.
Cable into the Brick’s PC port — the small square socket beside the numbered ports, not one of the numbered ones.
Other end into the computer.
Bluetooth — name it first
Do these in order. Naming the Brick after you go looking for it in the list is how groups end up driving each other’s robots.
Name your Brick. On the Brick: Settings (the spanner) → Brick Name. Type something nobody else will pick, then press the tick. Every Brick is called EV3 until somebody changes it.
Turn Bluetooth on. Settings → Bluetooth. Tick Bluetooth and Visibility. Leave iPhone/iPad/iPod unticked.
Connect from EV3 Classroom. Click the Brick icon at the top of the programming area, find your Brick by name, and click Connect.
Say yes on the Brick. It asks “Connect?” with the computer’s name — choose the tick, then accept the passkey, which is already 1234.
Where to read it. The name sits in the bar across the very top of the screen, on every screen — so you can check which Brick you are holding at any moment without going into a menu. This one is EV3VE. A Brick nobody has renamed says EV3.Step 3, and the reason step 1 exists. Three Bricks in range — read the name before you click Connect. Pairing with the wrong one is not an error: it works perfectly, on somebody else’s robot.
Step 2.Bluetooth switches the radio on; Visibility is what lets the computer find you. With Visibility off your Brick works perfectly and simply never appears in the list.Step 4. Look at the Brick. It asks whether to accept and names the computer. Choose the tick.Then the passkey, already 1234. Press the tick again and you are connected.
The two failures, every class, every time. The Brick has gone to sleep while you were building — press the centre button to wake it. Or you have paired with the group at the next table, which is why the name matters.
The long version, including Port View and how to read the port tiles, is in the Brick & Bluetooth guide.
Two things go wrong, every time, in every class. The Brick goes to sleep while you are building — wake it and try again. And somebody pairs with the group behind them, because both Bricks are called EV3. Rename yours.
Confirm the connection 2 min
A cable that is plugged in is not a Brick that is connected. Read the screen, not the cable.
Check the Brick icon: connected, or not.
Check the port tiles. A motor on A, and nothing on 1, 2, 3 or 4.
The tile should say Large Motor. If it says Medium, you are looking at a different motor than you thought — go back to section 5.
Swing the fan arm by hand and watch degrees counted change on the tile. Swing it from one limit to the other and read the number: that is your sweep, in degrees, measured rather than guessed.
Step 4 just handed you the exact number the rest of the lesson needs. Write it down.
Make it move 10 min
Five blocks. Out, back, six times. Use a number smaller than the sweep you measured — start well inside the limits and creep outwards later.
when program starts :: events hat
[A v] set speed to (40) % :: motors
repeat (6)
[A v] run [clockwise v] for (60) [degrees v] :: motors
[A v] run [counterclockwise v] for (60) [degrees v] :: motors
end
Out 60 degrees, back the same 60, six times over — so the arm finishes exactly where it started.
Walk it in the order the Brick runs it:
set speed to 40 % — nothing moves yet. This only decides how briskly the next blocks will run.
repeat (6) — everything held inside the loop’s mouth happens six times. You met this with the Stegosaurus.
run clockwise for 60 degrees — a sixth of a turn out. The block waits here until the movement has finished.
run counterclockwise for 60 degrees — the same distance back. Equal and opposite, which is why it does not drift.
What success looks like: six clean strokes, a breeze you can feel on your hand, and an arm sitting where it began. Nothing should knock, click or judder at either end of a stroke.
If it knocks at the end of a stroke, stop it now. That sound is the arm reaching its limit with the motor still pulling. Take 15 degrees off and run it again. Do not turn the speed down and hope — a slow crash is still a crash.
Change it and test 8 min
One change at a time, and predict before each run. A prediction that turns out wrong teaches you something; watching teaches you nothing.
Raise both degree numbers to 90. Predict: more breeze, or less? Then check — does it still clear the limits?
Now drop them to 20. The fan flutters instead of sweeping. You have just found out that a small stroke moves very little air however fast it goes.
Put the degrees back and change the speed to 15 %. Same distance, slower. Time six strokes with the clock on the wall.
Now speed 100 %. Predict whether it moves more air or just makes more noise, then hold your hand in front and find out.
The unfair test: change the second block to 50 degrees and leave the first at 60. Run it. Watch where the arm is after six strokes.
Step 5 is the one to remember. Ten degrees of difference, six times over, is sixty degrees of drift — and the arm walks itself into the frame. Out and back must match. Any mechanism that has to return to where it started depends on it.
Build it 15 min
Build the model before you read any further. Everything after this is about making it do something, and none of it will make much sense with nothing on the table in front of you.
Use the viewer's own controls to zoom and turn pages. Fullscreen makes it big enough to build from.
Check the finished build against the picture before you switch anything on. A motor mounted the wrong way round is far easier to spot now than it is to debug later, when it looks like a program fault.
Challenges & mission 27 min
Work through the challenges in order — each is harder than the last. The mission comes after all three, and it is meant to make you plan before you build.
Challenge 1
Find the widest stroke your fan can safely make. Raise the degree number a little at a time until the arm is sweeping as far as it can without ever touching the frame, then run twenty strokes in a row. Twenty clean strokes with no knock is the pass mark — one knock and the number is too big.
Challenge 2
Give the fan a real stroke: brisk on the push, gentle on the return, the way a person fans themselves. The two directions must run at different speeds and yet the arm must still finish exactly where it started after ten strokes. Show it does by marking the resting position before you start.
Challenge 3
Measure, do not guess. Using degrees counted on the port tile, find the exact sweep of your arm from one limit to the other, in degrees. Then write a program whose stroke is exactly four fifths of that number, and explain in one sentence why you would not use the whole sweep. Report the measured number, the number you used, and the arithmetic between them.
Mission
Build a fan that cools one person, for a set time, and puts itself away.
Choose a spot on the table and call it the chair. Your fan must run for a length of time you decide in advance, deliver as much air as it can to that spot, and finish with the arm back in its starting position — not near it, in it — so the model is ready to run again untouched.
Plan on paper before you build. You have three things you can trade against each other: how wide the stroke is, how fast it moves, and how many strokes fit in your time. Work out on paper which combination moves the most air before you try any of them, then test whether you were right.
Two questions when you demonstrate it. Which of the three did you change, and what evidence made you choose it? And how do you know the arm finished exactly where it began rather than close to it?
This is what you are building: the Folding Fan Robot.