📖 Scenario: You want to create a simple security system that detects motion using a PIR motion sensor connected to an Arduino board. When motion is detected, an LED will turn on to alert you.
🎯 Goal: Build a program that reads input from a PIR motion sensor and turns an LED on when motion is detected, and off when no motion is detected.
📋 What You'll Learn
Use a variable called pirPin to store the PIR sensor input pin number (2).
Use a variable called ledPin to store the LED output pin number (13).
Create a variable called motionDetected to store the PIR sensor reading.
Set the LED pin as output and the PIR pin as input in the setup() function.
Read the PIR sensor value inside the loop() function and store it in motionDetected.
Turn the LED on if motion is detected (value HIGH), otherwise turn it off.
Print "Motion detected!" or "No motion." to the Serial Monitor accordingly.
💡 Why This Matters
🌍 Real World
PIR motion sensors are used in home security systems to detect movement and alert homeowners.
💼 Career
Understanding how to read sensors and control outputs is a key skill for embedded systems and IoT device programming.
Progress0 / 4 steps
1
Set up PIR sensor and LED pins
Create two integer variables called pirPin and ledPin. Set pirPin to 2 and ledPin to 13.
Arduino
Hint
Use int to declare the pin numbers as variables.
2
Initialize pins in setup()
Write the setup() function. Inside it, set ledPin as an output and pirPin as an input. Also start serial communication at 9600 baud with Serial.begin(9600);.
Arduino
Hint
Use pinMode() to set pin modes and Serial.begin(9600); to start serial communication.
3
Read PIR sensor and control LED
Write the loop() function. Inside it, read the PIR sensor value from pirPin and store it in an integer variable called motionDetected. If motionDetected is HIGH, turn on the LED connected to ledPin. Otherwise, turn the LED off.
Arduino
Hint
Use digitalRead() to get the sensor value and digitalWrite() to control the LED.
4
Print motion status to Serial Monitor
Inside the loop() function, after controlling the LED, add an if statement to print "Motion detected!" to the Serial Monitor if motionDetected is HIGH. Otherwise, print "No motion.".
Arduino
Hint
Use Serial.println() to print messages to the Serial Monitor.
Practice
(1/5)
1. What does a PIR motion sensor detect in an Arduino project?
easy
A. Light intensity changes
B. Sound levels in the environment
C. Movement by sensing infrared changes
D. Temperature variations
Solution
Step 1: Understand PIR sensor function
A PIR sensor detects motion by sensing changes in infrared radiation emitted by objects.
Step 2: Compare with other options
Sound, temperature, and light sensors detect different things, not motion via infrared.
Final Answer:
Movement by sensing infrared changes -> Option C
Quick Check:
PIR sensor = Motion detection [OK]
Hint: PIR sensors detect heat movement, not sound or light [OK]
Common Mistakes:
Confusing PIR with sound or light sensors
Thinking PIR detects temperature directly
2. Which Arduino code line correctly reads the PIR sensor connected to digital pin 7?
easy
A. int motion = digitalWrite(7);
B. int motion = digitalRead(7);
C. int motion = analogRead(7);
D. int motion = pinMode(7, INPUT);
Solution
Step 1: Identify correct function to read digital input
digitalRead(pin) reads the digital value from a pin, suitable for PIR sensor output.
Step 2: Eliminate incorrect functions
analogRead reads analog pins, digitalWrite sets output, pinMode sets pin mode but does not read value.
Final Answer:
int motion = digitalRead(7); -> Option B
Quick Check:
Use digitalRead for digital sensor input [OK]
Hint: Use digitalRead to get sensor state from digital pins [OK]
Common Mistakes:
Using analogRead on digital pin
Using digitalWrite instead of digitalRead
Confusing pinMode with reading value
3. What will be the output on the Serial Monitor when the following Arduino code runs and the PIR sensor detects motion?
PIR sensor output is digital input, so pin 9 must be set as INPUT, not OUTPUT.
Step 2: Verify other code parts
Serial.begin is correctly in setup, digitalRead works on pin 9, and semicolon is present.
Final Answer:
Pin 9 should be set as INPUT, not OUTPUT -> Option A
Quick Check:
Input pins must use pinMode(INPUT) [OK]
Hint: Set sensor pins as INPUT, not OUTPUT [OK]
Common Mistakes:
Setting sensor pin as OUTPUT
Moving Serial.begin to loop
Ignoring pinMode settings
5. You want to turn on an LED connected to pin 13 only when the PIR sensor on pin 2 detects motion. Which Arduino code snippet correctly implements this behavior?
hard
A. pinMode(2, INPUT);
pinMode(13, OUTPUT);
if (digitalRead(2) == LOW) {
digitalWrite(13, HIGH);
}
B. pinMode(2, OUTPUT);
pinMode(13, INPUT);
if (digitalRead(13) == HIGH) {
digitalWrite(2, HIGH);
}
C. pinMode(2, INPUT);
pinMode(13, OUTPUT);
if (digitalRead(2) == HIGH) {
digitalWrite(13, HIGH);
}
D. pinMode(2, INPUT);
pinMode(13, OUTPUT);
digitalWrite(13, digitalRead(2));
Solution
Step 1: Set correct pin modes
Pin 2 is sensor input, so INPUT; pin 13 is LED output, so OUTPUT.
Step 2: Use digitalRead to control LED
digitalWrite(13, digitalRead(2)) sets LED HIGH when sensor reads HIGH, LOW otherwise.
Step 3: Eliminate other options
pinMode(2, OUTPUT);
pinMode(13, INPUT);
if (digitalRead(13) == HIGH) {
digitalWrite(2, HIGH);
} has wrong pin modes and logic. pinMode(2, INPUT);
pinMode(13, OUTPUT);
if (digitalRead(2) == HIGH) {
digitalWrite(13, HIGH);
} turns LED on for motion but lacks else clause to turn off when no motion. pinMode(2, INPUT);
pinMode(13, OUTPUT);
if (digitalRead(2) == LOW) {
digitalWrite(13, HIGH);
} reverses logic.
Final Answer:
pinMode(2, INPUT);
pinMode(13, OUTPUT);
digitalWrite(13, digitalRead(2)); -> Option D
Quick Check:
LED state = PIR sensor state [OK]
Hint: Write LED pin to sensor pin state directly for simplicity [OK]
Common Mistakes:
Setting sensor pin as OUTPUT
Reversing HIGH/LOW logic
Confusing input/output pin modes
Omitting else clause to turn off LED
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.