Skip to mission
Brain Bots
Mission 39
Step 1/6
Report a problem or missing part
Brain Bots
40 minchallenge

MISSION 39 · INTERMEDIATE ARDUINO

Four-Button Direction Pad

Jump to the build step

Make four-button direction pad. Explore multiple digital inputs and conflict rule.

Public beta missionThese revised instructions are open for learning while actual-kit testing is pending. A grown-up must confirm every setup check before power is connected. If a rating, pin card or required check is missing, explore the idea on screen and leave the physical build unpowered.

5 · Inventor Arcade

Your new skill: Multiple digital inputs and conflict rule

Revisit the skill you will reuse: drying recovery recorder

WHAT YOU'LL USE

Match these to your kit

Arduino UnoUSB A-to-B data cableHalf-size breadboardMale–male / male–female jumper wires (as needed for actual module terminals)4 buttons, 1 RGB LED, 3 × 2.2 kΩ

Gather from home

Computer with Arduino IDE and Serial Monitor

Reuse the parts between missions; these are not 45 simultaneous installations. Red/yellow/green means those three monochrome colours. RGB is a separate component with three channels.

BEFORE YOU BUILD

Unplug USB before changing connections. Use only the USB supply for this build; never connect 9V to 5V or a signal pin, and never connect to mains. An adult verifies variant, printed pin labels and resistor values before powering. Stop and unplug if a part becomes hot or damaged.

YOUR REWARD

+30 XPMission completion

PREDICT BEFORE YOU BEGIN

Before the test: which input will change, and what signal or reading do you expect?

BEFORE YOU BUILD

Parent check: exact part variant, labelled pins and stated values. If a check cannot be confirmed, keep this physical build unpowered and explore the code and prediction instead.

YOUR CHALLENGE

Build four-button direction pad and prove its rule.

NEW POWER-UP

Multiple digital inputs and conflict rule

You have explored recovery logging and consistent measurement. Now try multiple digital inputs and conflict rule.

Adult help: Adult helps with computer setup, first wiring and any water/cutting. Learner predicts, tests and explains.

See the idea before you build

How a breadboard connects insideBreadboard connection groupsWithin one numbered row A to E are connected, and F to J are connected separately. The centre gap separates them. Adjacent numbered rows are separate. Rail breaks vary; check your supplied board.151617ABCDEFGHIJCentre gap: no internal connection across

Each coloured strip is one connected group. Different numbered rows stay separate. This explains the board; use the mission’s exact connection reference for component positions. Check rail breaks on your supplied board.

Open the complete Arduino code

Copy the complete code into Arduino IDE or download the sketch. Follow the matching component card before connecting power.

// First Wonder Brain Bots 39 — Four-Button Direction Pad
// USB-powered model. Unplug before rewiring. Serial Monitor: 9600 baud.
int lastMask=-1;
const byte buttonPins[]={2,4,7,10};const byte buttonCount=4;
const bool COMMON_ANODE=false; // Adult: set true only for verified common-anode RGB.
void colour(int r,int g,int b){analogWrite(3,COMMON_ANODE?255-r:r);analogWrite(5,COMMON_ANODE?255-g:g);analogWrite(6,COMMON_ANODE?255-b:b);}

void setup(){Serial.begin(9600);pinMode(3,OUTPUT);digitalWrite(3,LOW);pinMode(5,OUTPUT);digitalWrite(5,LOW);pinMode(6,OUTPUT);digitalWrite(6,LOW);pinMode(2,INPUT_PULLUP);pinMode(4,INPUT_PULLUP);pinMode(7,INPUT_PULLUP);pinMode(10,INPUT_PULLUP);colour(0,0,0);Serial.println("Ready. Follow your mission test.");}
void loop(){
  unsigned long now=millis();
  
byte mask=0;for(byte i=0;i<4;i++)if(digitalRead(buttonPins[i])==LOW)mask|=(1<<i);
if(mask==1)colour(255,0,0);else if(mask==2)colour(0,255,0);else if(mask==4)colour(0,0,255);else if(mask==8)colour(255,80,0);else colour(0,0,0);
if(mask!=lastMask){lastMask=mask;Serial.println(mask==0?"NONE":mask==1?"UP":mask==2?"RIGHT":mask==4?"DOWN":mask==8?"LEFT":"CONFLICT: release extra buttons");}
}
Check the connection map

CONNECTION MAP

Build the electrical path before you test.

Keep power disconnected while changing connections.
JoinConnectWhy it matters
PowerSupplied USB data cable → Uno USB socket; computer at other endThe same cable uploads and supplies this model. Unplug before wiring.
Shared referenceUno GND → breadboard ground railAll module GND terminals use this same reference. Check whether your rail is split.
RGB redD3 → one 2.2 kΩ resistor → verified red channel legEach colour channel has its own protection.
RGB greenD5 → one 2.2 kΩ resistor → verified green channel legEach colour channel has its own protection.
RGB blueD6 → one 2.2 kΩ resistor → verified blue channel legEach colour channel has its own protection.
RGB common legVerified common-cathode → GND, OR common-anode → 5V and set COMMON_ANODE=trueAn adult must identify the variant and channel legs; never guess.
Button 1D2 → one switched terminal; opposite switched terminal → GNDINPUT_PULLUP: press reads LOW. Four-leg buttons have internally joined pairs; use a verified switched pair.
Button 2D4 → one switched terminal; opposite switched terminal → GNDINPUT_PULLUP: press reads LOW. Four-leg buttons have internally joined pairs; use a verified switched pair.
Button 3D7 → one switched terminal; opposite switched terminal → GNDINPUT_PULLUP: press reads LOW. Four-leg buttons have internally joined pairs; use a verified switched pair.
Button 4D10 → one switched terminal; opposite switched terminal → GNDINPUT_PULLUP: press reads LOW. Four-leg buttons have internally joined pairs; use a verified switched pair.
Kit variant and values confirmed by an adult
All pins match the map; USB was disconnected while wiring
Test includes expected, non-triggering and recovery cases

BUILD PATH

STEP 1 OF 6

Meet your mission

Try · Notice · ExplainRead the checkpoint, make a prediction, then test your idea.

You will explore multiple digital inputs and conflict rule. Gather the kit and home materials below. Unplug USB. Match the part names and printed labels.

Watch this step

A video demonstration will appear here when it is ready. You can follow the written step now.

Read the video instructions

You will explore multiple digital inputs and conflict rule. Gather the kit and home materials below. Unplug USB. Match the part names and printed labels.

Need a diagram for this step?

WHAT'S REALLY HAPPENING?

Why it works

Multiple digital inputs and conflict rule. Check your rule against an example where it should respond and one where it should not. RGB turns off and text reports a conflict.

This is a tabletop learning model. Real systems also need reliable power, robust sensors and careful handling of unknown measurements; this kit model is not a safety or security device.

FAIR-TEST CHALLENGE

Change one input or setting at a time; keep the wiring and protection unchanged. Repeat three trials.

WHEN IT DOESN'T WORK YET

Debug one clue at a time.

Upload or port missing

Likely cause: Wrong board, port or cable connection

Try this first: Check Arduino Uno selection and supplied data cable. Unplug external wiring before checking upload on built-in LED.

Signal does not match the test

Likely cause: Pin labels, input calibration or variant differs

Try this first: Unplug. Compare every connection with the map. Return to the earlier single-input mission; test one subsystem at a time.

Reading is unknown or unstable

Likely cause: Sensor settling, target, contact or calibration

Try this first: Follow the exact test setup; allow settling, use a flat target or check module pinout unpowered. Never replace unknown with a guessed safe reading.

CLEAN, RESET AND STORE

Disconnect USB, remove wires carefully and store components dry.

NEXT SKILL

Analog centre and deadband