📖 Scenario: You are building a simple Arduino program to control an LED light. Instead of writing all the code in the loop() function, you want to organize your code by creating functions. This will make your program easier to read and change later.
🎯 Goal: Create a function to turn the LED on and another function to turn the LED off. Then use these functions inside the loop() to blink the LED.
📋 What You'll Learn
Create a function called turnLedOn that turns the LED on.
Create a function called turnLedOff that turns the LED off.
Use these functions inside the loop() to blink the LED with a delay.
Use the built-in digitalWrite and delay functions.
💡 Why This Matters
🌍 Real World
Organizing code with functions is important in real Arduino projects to keep code clean and easy to update.
💼 Career
Many jobs in embedded systems and hardware programming require writing clear, organized code using functions.
Progress0 / 4 steps
1
Set up the LED pin
Write code to create a constant integer called ledPin and set it to 13. Then write the setup() function to set ledPin as an output using pinMode.
Arduino
Hint
Use const int ledPin = 13; to define the LED pin. Inside setup(), use pinMode(ledPin, OUTPUT); to set it as output.
2
Create functions to turn LED on and off
Write two functions: void turnLedOn() that sets ledPin HIGH using digitalWrite, and void turnLedOff() that sets ledPin LOW using digitalWrite.
Arduino
Hint
Define turnLedOn() to call digitalWrite(ledPin, HIGH); and turnLedOff() to call digitalWrite(ledPin, LOW);.
3
Use functions to blink the LED
Inside the loop() function, call turnLedOn(), then delay(1000), then call turnLedOff(), then delay(1000) to blink the LED on and off every second.
Arduino
Hint
Call turnLedOn(), then delay(1000);, then turnLedOff(), then delay(1000); inside loop().
4
Display the blinking LED behavior
Upload the program and observe the LED on pin 13 blinking on and off every second. Write a Serial.println statement inside loop() to print "LED is blinking" each cycle after turning the LED off.
Arduino
Hint
Use Serial.println("LED is blinking"); after turning the LED off and delaying.
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
Step 1: Understand what functions do
Functions group code into small blocks that can be used many times.
Step 2: Identify the main benefit
This grouping helps keep code clean and easy to manage.
Final Answer:
To organize code into reusable parts -> Option B
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
Step 1: Recall Arduino function syntax
Functions start with return type, then name, then parentheses for parameters.
Step 2: Match syntax for no return and no parameters
Use void for no return and empty parentheses for no parameters.
Final Answer:
void blinkLED() { /* code */ } -> Option A
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
Step 1: Understand function call and parameters
The function printSum is called with 3 and 4 as inputs.
Step 2: Calculate the sum inside the function
The function adds 3 + 4 = 7 and prints it to Serial Monitor.
Final Answer:
7 -> Option C
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:
D. Missing parentheses after function name in declaration
Solution
Step 1: Check function declaration syntax
The function blinkLED is declared without parentheses, which is invalid.
Step 2: Confirm correct syntax
Function declarations must have parentheses even if no parameters: void blinkLED() { ... }.
Final Answer:
Missing parentheses after function name in declaration -> Option D
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
Step 1: Understand parameter type for LED state
LED state is usually HIGH or LOW, which are integers in Arduino.
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.
Step 3: Evaluate other options
B ignores parameter, C wrongly returns digitalWrite result, D inverts boolean state which may confuse usage.
Final Answer:
void setLED(int state) { digitalWrite(13, state); } -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.