Bird
Raised Fist0
Arduinoprogramming~20 mins

Arduino IDE and sketch structure - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Arduino Sketch Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this Arduino sketch?

Consider the following Arduino sketch. What will be printed to the Serial Monitor?

Arduino
void setup() {
  Serial.begin(9600);
  Serial.println("Start");
}

void loop() {
  Serial.println("Looping");
  delay(1000);
  while(true) {}
}
A
Start
Looping
(no further output, program stuck in while loop)
B
Start
Looping
Looping
Looping (repeats every second)
CNo output, Serial not initialized
D
Start
(no further output, loop() never runs)
Attempts:
2 left
💡 Hint

Think about what the while(true) {} does inside loop().

🧠 Conceptual
intermediate
1:00remaining
Which function runs only once in an Arduino sketch?

In an Arduino sketch, which function is guaranteed to run only once after the board resets?

Amain()
Bloop()
Csetup()
Dinit()
Attempts:
2 left
💡 Hint

Think about the function that prepares the board before repeating actions.

🔧 Debug
advanced
1:30remaining
Why does this sketch fail to compile?

Examine the sketch below. Why does it fail to compile?

Arduino
void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("Hello");
  delay(1000);
}
AMissing semicolon after Serial.begin(9600)
BSerial.begin() must be called in loop(), not setup()
CSerial.println() requires a return type
Ddelay() cannot be used in loop()
Attempts:
2 left
💡 Hint

Check punctuation carefully in setup().

📝 Syntax
advanced
1:00remaining
What is the correct structure of an Arduino sketch?

Which of the following sketches has the correct minimal structure to compile and run?

A
void main() {}
void loop() {}
Bvoid loop() {}
Cvoid setup() {}
D
void setup() {}
void loop() {}
Attempts:
2 left
💡 Hint

Remember the two main functions every Arduino sketch needs.

🚀 Application
expert
1:30remaining
How many times does this sketch print "Tick" in 5 seconds?

Given the sketch below, how many times will "Tick" be printed to the Serial Monitor in 5 seconds?

Arduino
void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("Tick");
  delay(1000);
}
A4 times
B5 times
C6 times
DCannot determine without more info
Attempts:
2 left
💡 Hint

Think about how long each loop cycle takes and how many fit in 5 seconds.

Practice

(1/5)
1. What is the main purpose of the setup() function in an Arduino sketch?
easy
A. To run code once at the start to initialize settings
B. To run code repeatedly in a loop
C. To declare variables globally
D. To stop the program from running

Solution

  1. Step 1: Understand the role of setup()

    The setup() function runs once when the Arduino starts to prepare the board.
  2. Step 2: Compare with loop()

    The loop() function runs repeatedly, but setup() runs only once.
  3. Final Answer:

    To run code once at the start to initialize settings -> Option A
  4. Quick Check:

    setup() runs once = B [OK]
Hint: Remember: setup runs once, loop runs forever [OK]
Common Mistakes:
  • Confusing setup() with loop()
  • Thinking setup() runs repeatedly
  • Believing setup() stops the program
2. Which of the following is the correct basic structure of an Arduino sketch?
easy
A. void setup() { } void loop() { }
B. void start() { } void repeat() { }
C. void main() { }
D. void initialize() { } void run() { }

Solution

  1. Step 1: Recall Arduino sketch structure

    The Arduino sketch must have setup() and loop() functions defined with void return type.
  2. Step 2: Check options for correct function names

    Only void setup() { } void loop() { } uses setup() and loop() correctly.
  3. Final Answer:

    void setup() { } void loop() { } -> Option A
  4. Quick Check:

    Correct function names = C [OK]
Hint: Look for setup() and loop() function names [OK]
Common Mistakes:
  • Using wrong function names like main()
  • Missing either setup() or loop()
  • Using incorrect return types
3. What will be the output on the Serial Monitor when running this Arduino sketch?
void setup() {
  Serial.begin(9600);
  Serial.println("Start");
}

void loop() {
  Serial.println("Looping");
  delay(1000);
}
medium
A. No output because Serial.begin() is missing
B. Start and Looping printed once each
C. Only Looping printed repeatedly, no Start
D. Start printed once, then Looping printed every second

Solution

  1. Step 1: Analyze setup() output

    Serial.begin(9600) starts serial communication, then "Start" is printed once.
  2. Step 2: Analyze loop() output

    Inside loop(), "Looping" is printed every 1000 milliseconds (1 second) repeatedly.
  3. Final Answer:

    Start printed once, then Looping printed every second -> Option D
  4. Quick Check:

    setup() once, loop() repeats = D [OK]
Hint: setup() prints once, loop() repeats output [OK]
Common Mistakes:
  • Thinking setup() runs repeatedly
  • Forgetting Serial.begin() is needed
  • Assuming no delay means no output
4. Identify the error in this Arduino sketch:
void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH)
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}
medium
A. pinMode should be in loop()
B. Missing semicolon after digitalWrite(13, HIGH)
C. delay() cannot be used in loop()
D. digitalWrite() needs two arguments

Solution

  1. Step 1: Check syntax line by line

    In loop(), the line digitalWrite(13, HIGH) is missing a semicolon at the end.
  2. Step 2: Verify other parts

    pinMode is correctly in setup(), delay() is allowed in loop(), and digitalWrite() has correct arguments.
  3. Final Answer:

    Missing semicolon after digitalWrite(13, HIGH) -> Option B
  4. Quick Check:

    Syntax error: missing semicolon = A [OK]
Hint: Look for missing semicolons after statements [OK]
Common Mistakes:
  • Putting pinMode in loop() unnecessarily
  • Thinking delay() is not allowed in loop()
  • Miscounting digitalWrite() arguments
5. You want to blink an LED connected to pin 9 exactly 5 times, then stop. Which modification to the Arduino sketch structure is best?
hard
A. Remove loop() function entirely
B. Put blinking code inside setup() and leave loop() empty
C. Use a counter variable in loop() and stop blinking after 5 times
D. Use delay(5000) in setup() to blink 5 times

Solution

  1. Step 1: Understand blinking 5 times

    Since loop() runs forever, use a counter variable inside loop() to count blinks.
  2. Step 2: Evaluate options

    Putting blinking code in setup() runs once, so it performs only one blink cycle, not 5. Removing loop() is invalid. Using delay(5000) only delays, does not blink 5 times.
  3. Final Answer:

    Use a counter variable in loop() and stop blinking after 5 times -> Option C
  4. Quick Check:

    Counter in loop() controls blink count = A [OK]
Hint: Use a counter in loop() to limit repetitions [OK]
Common Mistakes:
  • Trying to remove loop() function
  • Putting repeated code only in setup()
  • Using delay() to count blinks incorrectly