Bird
Raised Fist0
Arduinoprogramming~10 mins

digitalWrite() for output control in Arduino - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - digitalWrite() for output control
Setup pin mode to OUTPUT
Call digitalWrite(pin, HIGH/LOW)
Pin voltage set HIGH or LOW
LED or device turns ON or OFF
Repeat or end
This flow shows how setting a pin as output and using digitalWrite controls voltage to turn devices on or off.
Execution Sample
Arduino
void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}
This code turns an LED on pin 13 on and off every second.
Execution Table
StepActionPin 13 StateOutput Effect
1pinMode(13, OUTPUT)Configured as OUTPUTReady to control voltage
2digitalWrite(13, HIGH)HIGH (5V)LED turns ON
3delay(1000)HIGH (5V)LED stays ON for 1 second
4digitalWrite(13, LOW)LOW (0V)LED turns OFF
5delay(1000)LOW (0V)LED stays OFF for 1 second
6Loop repeats from step 2Repeats HIGH/LOW cycleLED blinks continuously
💡 Loop runs forever, blinking LED on pin 13 every second
Variable Tracker
VariableStartAfter Step 2After Step 4After Step 6
Pin 13 StateNot setHIGHLOWHIGH (repeats)
Key Moments - 2 Insights
Why do we need pinMode before digitalWrite?
pinMode sets the pin as OUTPUT so digitalWrite can control voltage; without it, digitalWrite won't work properly (see Step 1 in execution_table).
What happens if we write HIGH then immediately LOW without delay?
The pin changes too fast to see the LED turn on; delays keep the LED visibly ON or OFF (see Steps 2-5).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the pin 13 state after Step 4?
AHIGH
BNot set
CLOW
DConfigured as INPUT
💡 Hint
Check the 'Pin 13 State' column at Step 4 in the execution_table.
At which step does the LED turn ON?
AStep 2
BStep 1
CStep 4
DStep 5
💡 Hint
Look at the 'Output Effect' column to see when LED turns ON.
If we remove delay after digitalWrite(13, HIGH), what changes in the execution?
ALED stays ON permanently
BLED blinks faster, possibly not visible
CPin 13 mode changes to INPUT
DdigitalWrite stops working
💡 Hint
Delays control how long the LED stays ON or OFF; without delay, changes happen too fast (see Steps 3 and 5).
Concept Snapshot
digitalWrite(pin, value) sets voltage HIGH or LOW on a pin.
pinMode(pin, OUTPUT) must be set first.
Use HIGH to turn device ON, LOW to turn OFF.
Delays help visible ON/OFF timing.
Common for blinking LEDs or controlling outputs.
Full Transcript
This example shows how to control an output pin on an Arduino using digitalWrite. First, pinMode sets pin 13 as an OUTPUT. Then digitalWrite sets the pin voltage HIGH or LOW, turning an LED on or off. Delays keep the LED visibly on or off for one second each. The loop repeats, blinking the LED continuously. Key points: pinMode is required before digitalWrite, and delays control visible timing. Without delays, the LED changes too fast to see.

Practice

(1/5)
1. What does the digitalWrite() function do in Arduino programming?
easy
A. It sets the analog value of a pin.
B. It reads the voltage from a digital pin.
C. It initializes the serial communication.
D. It sets a digital pin to HIGH or LOW voltage.

Solution

  1. Step 1: Understand the purpose of digitalWrite()

    The function digitalWrite() is used to control the voltage level on a digital pin, setting it either HIGH (on) or LOW (off). It does not read values (that's digitalRead()), nor does it set analog values or initialize serial communication.
  2. Final Answer:

    It sets a digital pin to HIGH or LOW voltage. -> Option D
  3. Quick Check:

    digitalWrite() controls pin voltage = D [OK]
Hint: digitalWrite sets pin ON or OFF voltage [OK]
Common Mistakes:
  • Confusing digitalWrite() with digitalRead()
  • Thinking digitalWrite() reads pin values
  • Mixing digitalWrite() with analogWrite()
2. Which of the following is the correct syntax to turn on an LED connected to pin 13 using digitalWrite()?
easy
A. digitalWrite(13, HIGH);
B. digitalWrite(13, LOW);
C. digitalWrite(13, ON);
D. digitalWrite(13, TRUE);

Solution

  1. Step 1: Recall correct constants and check options

    digitalWrite() uses HIGH and LOW constants. To turn on, use HIGH. A uses ON (not valid), B uses LOW (turns off), D uses TRUE (not valid). Only C: digitalWrite(13, HIGH); is correct.
  2. Final Answer:

    digitalWrite(13, HIGH); -> Option A
  3. Quick Check:

    Use HIGH or LOW with digitalWrite() = C [OK]
Hint: Use HIGH or LOW, not ON or TRUE [OK]
Common Mistakes:
  • Using ON or TRUE instead of HIGH
  • Using LOW instead of HIGH
  • Forgetting to set pinMode to OUTPUT first
3. What will be the output on pin 8 after running this code snippet?
pinMode(8, OUTPUT);
digitalWrite(8, LOW);
digitalWrite(8, HIGH);
digitalWrite(8, LOW);
medium
A. Pin 8 will toggle rapidly.
B. Pin 8 will be HIGH (on).
C. Pin 8 will be LOW (off).
D. Pin 8 will cause a syntax error.

Solution

  1. Step 1: Trace the digitalWrite() calls

    pinMode sets OUTPUT, then LOW, HIGH, LOW. Final LOW so pin off.
  2. Final Answer:

    Pin 8 will be LOW (off). -> Option C
  3. Quick Check:

    Last digitalWrite sets pin LOW = A [OK]
Hint: Last digitalWrite() sets pin state [OK]
Common Mistakes:
  • Assuming pin toggles automatically
  • Confusing initial and final pin states
  • Thinking multiple digitalWrite calls cause errors
4. Identify the error in this Arduino code snippet:
digitalWrite(12, HIGH);
pinMode(12, OUTPUT);
medium
A. No error, code runs fine.
B. pinMode() must be called before digitalWrite().
C. digitalWrite() cannot use pin 12.
D. HIGH is not a valid value for digitalWrite().

Solution

  1. Step 1: Check order of pinMode() and digitalWrite()

    pinMode() must set OUTPUT before digitalWrite(), otherwise unexpected behavior. Here digitalWrite first.
  2. Final Answer:

    pinMode() must be called before digitalWrite(). -> Option B
  3. Quick Check:

    Set pinMode before digitalWrite = A [OK]
Hint: Always set pinMode(OUTPUT) before digitalWrite() [OK]
Common Mistakes:
  • Calling digitalWrite before pinMode
  • Assuming pinMode defaults to OUTPUT
  • Using invalid pin numbers
5. You want to blink an LED connected to pin 9 on and off every second. Which code snippet correctly uses digitalWrite() inside the loop() function to achieve this?
hard
A. digitalWrite(9, HIGH); delay(1000); digitalWrite(9, LOW); delay(1000);
B. digitalWrite(9, HIGH); digitalWrite(9, LOW); delay(1000);
C. pinMode(9, OUTPUT); digitalWrite(9, HIGH); delay(1000);
D. digitalWrite(9, HIGH); delay(500); digitalWrite(9, HIGH); delay(500);

Solution

  1. Step 1: Understand blinking and analyze options

    Blink: HIGH, delay(1000), LOW, delay(1000). A: HIGH immediate LOW, no on time. C: pinMode in loop inefficient, no LOW. D: HIGH twice, always on. Only B correct.
  2. Final Answer:

    digitalWrite(9, HIGH); delay(1000); digitalWrite(9, LOW); delay(1000); -> Option A
  3. Quick Check:

    Turn ON, delay, turn OFF, delay = B [OK]
Hint: Turn ON, delay, turn OFF, delay for blinking [OK]
Common Mistakes:
  • Missing delay between ON and OFF
  • Not turning LED OFF after ON
  • Setting pinMode inside loop repeatedly