Arduino · Grade 5 · Guided practice
How to code this project
What you will make: A button starts a four-second Walk state and a three-second flashing Warning, then returns to Wait.
Teacher-supported Grade 5 reference build for Arduino Uno R3 only. A classroom model, never real traffic equipment. The loop keeps checking time instead of pausing with delay().
Before you start
- Parts: Uno R3, USB data cable, breadboard, push button, red LED, green LED, TWO 330 Ω series resistors, passive piezo and insulated jumpers. Keep sound low and provide a silent visual alternative.
- Power off: D8 → 330 Ω → red LED anode; red cathode → GND. D9 → separate 330 Ω → green LED anode; green cathode → GND. Adult checks polarity and resistors.
- Button connects D2 to GND when pressed (INPUT_PULLUP means pressed reads LOW). Use the button’s datasheet to identify its connected legs. Passive piezo + to D10 and − to GND. No mains or external loads.
- Add printed WAIT, WALK and WARNING labels to the model; flashing and sound are cues in addition to color. Adult checks the complete circuit before power-on.
Opening and saving: In the teacher-installed Arduino IDE, open a new sketch, replace its entire contents with the starter, and save it with a project name. Select Arduino Uno and the connected port, click Verify (check mark), then Upload (arrow). Disconnect power before wiring. If uploading fails, check the board, USB data cable and port with the teacher. These starters still require an adult bench test on your actual hardware.
Build it one step at a time
- First upload the built-in Blink example with external parts disconnected; confirm the built-in light blinks.
- Disconnect power, build the listed circuit and obtain an adult inspection.
- Replace the entire sketch with the starter below. Verify, choose the Uno R3 and its port, then upload.
- Find the three states. Trace which line changes WAIT to WALK when the button reads LOW.
- Find 4000 and 3000: these are milliseconds (1000 = one second). Trace how millis() measures elapsed time.
- Run the tests below before adding the model intersection. Holding the button must not start a second cycle; release after returning to WAIT to arm it again.
Complete starter sketch
enum State { WAIT, WALK, WARNING };
State state = WAIT;
unsigned long started = 0;
bool armed = false;
const int button = 2, red = 8, green = 9, piezo = 10;
void setup() {
pinMode(button, INPUT_PULLUP);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(piezo, OUTPUT);
}
void loop() {
unsigned long now = millis();
if (state == WAIT) {
if (digitalRead(button) == HIGH) armed = true;
if (digitalRead(button) == LOW && armed) {
state = WALK;
started = now;
armed = false;
}
} else if (state == WALK && now - started >= 4000) {
state = WARNING;
started = now;
} else if (state == WARNING && now - started >= 3000) {
state = WAIT;
}
bool flash = ((now - started) / 250) % 2 == 0;
digitalWrite(red, state == WAIT ? HIGH : LOW);
digitalWrite(green,
(state == WALK || (state == WARNING && flash)) ? HIGH : LOW);
bool beep = (state == WALK && (now - started) % 1000 < 100)
|| (state == WARNING && flash);
if (beep) tone(piezo, 900);
else noTone(piezo);
}Predict, test and record
Write your name and date on the printed page. Run every test, note the actual result, and retest after one change.
| Try this input | Expected result | Actual result / retest |
|---|---|---|
| Start without pressing | Red Wait light; no sound | ________________ |
| Press once and time the full cycle | Green Walk about 4 s, flashing Warning about 3 s, then red Wait | ________________ |
| Hold the button through the cycle | Returns to Wait without starting again; release then press for a new cycle | ________________ |
If it does not work
- Starts without a press? Disconnect power; teacher checks button legs and D2-to-GND wiring.
- LED stays dark? Power off; check polarity, pin and series resistor.
- Piezo silent? Confirm passive piezo and D10; do not substitute a high-current speaker.
Make one change
Change Walk to 6000 ms, predict the new total cycle time, and measure three cycles.
We changed __________. We predicted __________. Our test showed __________.
Teacher pacing: Use a 45-minute coding session: 5 minutes to predict, 10 to model a first working response, 20 for paired building, 7 for tests and 3 to save and explain. Continue in another meeting if setup or debugging takes longer; do not rush hardware checks.
Grade 5 support: Start with the working reference version, then explain each condition or state. Keep an input/expected/actual test log and change only one variable at a time.
Teacher learning resources
Preview resources before class. Follow this page’s specified reference build; another tutorial may use different hardware.
Print support: The lesson’s Print button includes this guide, recipe and test table.
For teachers
Engineering standards
This shows how the lesson connects to the national NGSS engineering standards and what student work you can collect.
3-5-ETS1-1
Teams define who needs the accessible crosswalk prototype and set measurable performance, safety, material, and time limits.
What students show: User-centered problem statement with criteria and constraints.3-5-ETS1-2
Teams compare at least two circuit, code, or enclosure ideas against the success criteria.
What students show: Labeled system diagrams and a recorded design choice.3-5-ETS1-3
Teams run a repeatable test—run identical request cycles and measure timing, clarity, and user interpretation—then change one variable and retest.
What students show: Test table, code or build revision, and evidence-based explanation.Materials
- Cardboard, paper, craft sticks, tape, reusable building pieces, and student-proposed materials
- Project platform: Arduino + laser cutter
- Breadboard, paper-circuit supplies, or low-voltage power when needed
- request button input component or student-designed substitute
- timed LEDs and buzzer output component or student-designed substitute
- LEDs, resistors, jumper wires, copper tape, switches, and clips as needed
- Laser Cutting materials for an optional case, sign, mount, or model
- Computer with approved coding or simulation tools when needed
- Planning sheet, ruler, and test-data table
Teacher preparation
- Build and test one possible reference solution without making it the required design.
- Prepare a basic-materials table plus optional electronics and fabrication stations.
- If coding is used, prepare a starter option for state sequence with nonblocking timing; students may propose another workable control method.
- Prepare optional fabrication templates and a file rule beginning G5_10.
- Mark adult approval points before power-on and machine fabrication.
Step by step
How to teach it
Meet the user and define success
- Introduce the application: Help different pedestrians understand when a model crosswalk is ready, changing, or stopped.
- Identify the user, need, criteria, and constraints.
- Draw a system map with input → code → output.
Build a first solution
- Choose basic, electronic, and fabricated materials based on the team's idea.
- Build with power disconnected whenever electronics are used.
- Complete an adult check, then troubleshoot one connection or physical feature at a time.
Create the behavior
- Create the first working control using state sequence with nonblocking timing.
- Predict what one rule, connection, or code change will do before testing it.
- Make the system understandable with labels, diagrams, comments, or coding blocks.
Test and improve
- Use the same procedure each time: run identical request cycles and measure timing, clarity, and user interpretation.
- Record at least three results.
- Change one code, circuit, or physical-design variable and retest.
Fabricate and present
- Design a laser cutting part that protects, mounts, or explains the electronics.
- Adult reviews and operates fabrication equipment where required.
- Connect the finished system and demonstrate how the evidence improved it.
Assessment
- Problem statement names a real user and measurable need.
- Circuit matches the team diagram and uses components safely.
- Program connects the intended input to the intended output.
- Test conditions remain consistent and include recorded evidence.
- Revision addresses a documented failure or user need.
Supports & extensions
- Use color-coded wires and a photograph of each breadboard step.
- Provide block coding or partially completed code with one change at a time.
- Assign roles: circuit builder, coder, tester, and recorder.
- Let students explain findings orally or with labeled diagrams.
- Extension: add a second sensor, output, data display, or operating mode.
Safety & responsible use
- Use only teacher-approved low-voltage classroom electronics; never connect projects to wall current.
- Disconnect power before changing wires or components.
- Use the correct resistor with every standard LED and stop immediately if a part becomes hot.
- An adult handles soldering, laser cutting, printer setup, blades, and final power approval.
- Keep liquids away from boards unless a sealed, teacher-approved sensor activity specifically requires them.
No-machine alternative
Build with cardboard, paper mechanisms, paper circuits, or a free on-screen simulator. Students may invent another safe way to model the same function, then compare ideas, test one variable, collect evidence, and revise.
Printable student design brief
The challenge
Create a working accessible crosswalk prototype for this need: Help different pedestrians understand when a model crosswalk is ready, changing, or stopped.
Success criteria
- Sequence has clear wait, walk, and warning states
- Uses more than color alone
- Completes repeated cycles consistently
Constraints
- Educational model—not traffic equipment
- Sound stays at a teacher-approved level
- Adult fabricates the intersection base


