Bird
Raised Fist0
Arduinoprogramming~20 mins

Code organization with functions in Arduino - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Function Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of function call with parameters

What will be printed on the Serial Monitor when this Arduino code runs?

Arduino
void setup() {
  Serial.begin(9600);
  printSum(5, 3);
}

void loop() {}

void printSum(int a, int b) {
  Serial.println(a + b);
}
AError: missing return type
B8
C53
D0
Attempts:
2 left
💡 Hint

Remember that Serial.println prints the value passed to it.

🧠 Conceptual
intermediate
1:30remaining
Purpose of the setup() function

What is the main purpose of the setup() function in an Arduino sketch?

ATo run code repeatedly in a loop
BTo define custom functions
CTo declare global variables
DTo run code once at the start of the program
Attempts:
2 left
💡 Hint

Think about what happens when the Arduino first turns on.

🔧 Debug
advanced
2:00remaining
Identify the error in function definition

What error will this Arduino code cause?

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

void loop() {}

void greet() {
  Serial.println("Hello, world!");
}
ASyntaxError: missing semicolon
BRuntimeError: greet not defined
CNo error, prints 'Hello, world!'
DTypeError: wrong function return type
Attempts:
2 left
💡 Hint

Check punctuation at the end of each statement.

❓ Predict Output
advanced
2:30remaining
Output of nested function calls

What will be printed on the Serial Monitor after running this code?

Arduino
void setup() {
  Serial.begin(9600);
  int result = multiply(add(2, 3), 4);
  Serial.println(result);
}

void loop() {}

int add(int x, int y) {
  return x + y;
}

int multiply(int a, int b) {
  return a * b;
}
A20
B14
CError: multiply not defined
D10
Attempts:
2 left
💡 Hint

Calculate the inner function first, then the outer.

📝 Syntax
expert
1:30remaining
Correct function prototype declaration

Which option correctly declares a function prototype for a function named blinkLED that takes an int parameter and returns nothing?

AblinkLED(void int duration);
Bint blinkLED(int duration);
Cvoid blinkLED(int duration);
Dvoid blinkLED(duration int);
Attempts:
2 left
💡 Hint

Remember the syntax: return_type function_name(parameter_type parameter_name);

Practice

(1/5)
1. What is the main purpose of using functions in Arduino programming?
easy
A. To increase the size of the program
B. To organize code into reusable parts
C. To make the program run faster
D. To avoid using variables

Solution

  1. Step 1: Understand what functions do

    Functions group code into small blocks that can be used many times.
  2. Step 2: Identify the main benefit

    This grouping helps keep code clean and easy to manage.
  3. Final Answer:

    To organize code into reusable parts -> Option B
  4. Quick Check:

    Functions = reusable code blocks [OK]
Hint: Functions group code for reuse and clarity [OK]
Common Mistakes:
  • Thinking functions make code run faster
  • Believing functions increase program size
  • Confusing functions with variables
2. Which of the following is the correct way to declare a function named blinkLED that takes no parameters and returns nothing in Arduino?
easy
A. void blinkLED() { /* code */ }
B. int blinkLED() { /* code */ }
C. blinkLED void() { /* code */ }
D. function blinkLED() { /* code */ }

Solution

  1. Step 1: Recall Arduino function syntax

    Functions start with return type, then name, then parentheses for parameters.
  2. Step 2: Match syntax for no return and no parameters

    Use void for no return and empty parentheses for no parameters.
  3. Final Answer:

    void blinkLED() { /* code */ } -> Option A
  4. Quick Check:

    void + name() = correct function declaration [OK]
Hint: Use 'void' for no return and () for no parameters [OK]
Common Mistakes:
  • Using 'function' keyword (not Arduino style)
  • Putting return type after function name
  • Omitting parentheses
3. What will be the output on the Serial Monitor after running this Arduino code?
void setup() {
  Serial.begin(9600);
  printSum(3, 4);
}

void loop() {}

void printSum(int a, int b) {
  Serial.println(a + b);
}
medium
A. Error: missing return
B. 34
C. 7
D. Nothing

Solution

  1. Step 1: Understand function call and parameters

    The function printSum is called with 3 and 4 as inputs.
  2. Step 2: Calculate the sum inside the function

    The function adds 3 + 4 = 7 and prints it to Serial Monitor.
  3. Final Answer:

    7 -> Option C
  4. Quick Check:

    3 + 4 = 7 printed [OK]
Hint: Add parameters inside function and print result [OK]
Common Mistakes:
  • Thinking '34' is printed as string concatenation
  • Expecting a return value instead of print
  • Assuming no output because loop is empty
4. Identify the error in this Arduino code snippet:
void setup() {
  blinkLED();
}

void blinkLED {
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(500);
}
medium
A. delay function requires a return value
B. Missing semicolon after function call
C. digitalWrite cannot be used inside functions
D. Missing parentheses after function name in declaration

Solution

  1. Step 1: Check function declaration syntax

    The function blinkLED is declared without parentheses, which is invalid.
  2. Step 2: Confirm correct syntax

    Function declarations must have parentheses even if no parameters: void blinkLED() { ... }.
  3. Final Answer:

    Missing parentheses after function name in declaration -> Option D
  4. Quick Check:

    Function declaration needs () [OK]
Hint: Always include () after function name in declaration [OK]
Common Mistakes:
  • Forgetting parentheses in function declaration
  • Adding semicolon after function call (not needed)
  • Misunderstanding digitalWrite usage
5. You want to create a function setLED that turns an LED on or off based on a parameter. Which of these function definitions correctly uses a parameter to control the LED state on pin 13?
hard
A. void setLED(int state) { digitalWrite(13, state); }
B. void setLED() { digitalWrite(13, HIGH); }
C. int setLED(int state) { return digitalWrite(13, state); }
D. void setLED(boolean state) { digitalWrite(13, !state); }

Solution

  1. Step 1: Understand parameter type for LED state

    LED state is usually HIGH or LOW, which are integers in Arduino.
  2. Step 2: Check function that uses parameter correctly

    void setLED(int state) { digitalWrite(13, state); } takes an int parameter and passes it directly to digitalWrite on pin 13.
  3. Step 3: Evaluate other options

    B ignores parameter, C wrongly returns digitalWrite result, D inverts boolean state which may confuse usage.
  4. Final Answer:

    void setLED(int state) { digitalWrite(13, state); } -> Option A
  5. Quick Check:

    Parameter controls LED state directly [OK]
Hint: Use int parameter for HIGH/LOW and pass to digitalWrite [OK]
Common Mistakes:
  • Returning digitalWrite result (void function expected)
  • Ignoring parameter and hardcoding LED state
  • Inverting boolean state unintentionally
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard