📖 Scenario: You have a Raspberry Pi with a camera module. You want to create a simple program that takes photos at regular intervals to make a time-lapse video later.
🎯 Goal: Build a Python program that takes a photo every few seconds and saves it with a unique filename.
📋 What You'll Learn
Create a list of filenames for photos
Set an interval time in seconds
Use a loop to simulate taking photos at each interval
Print the filenames of photos taken
💡 Why This Matters
🌍 Real World
Time-lapse photography is used to capture slow changes like plants growing or clouds moving by taking photos at set intervals.
💼 Career
Understanding loops and timing is important for automation tasks in programming and working with hardware like Raspberry Pi.
Progress0 / 4 steps
1
Create a list of photo filenames
Create a list called photo_filenames with these exact strings: 'photo1.jpg', 'photo2.jpg', 'photo3.jpg', 'photo4.jpg', 'photo5.jpg'.
Raspberry Pi
Hint
Use square brackets [] to create a list and put the photo names as strings inside.
2
Set the interval time
Create a variable called interval_seconds and set it to the number 10 to represent the time between photos in seconds.
Raspberry Pi
Hint
Just write interval_seconds = 10 to set the interval time.
3
Simulate taking photos with a loop
Use a for loop with the variable filename to go through each item in photo_filenames. Inside the loop, write a comment # Simulate taking photo to represent taking a photo.
Raspberry Pi
Hint
Write for filename in photo_filenames: and indent the comment inside the loop.
4
Print the photo filenames taken
Inside the for loop, write print(f"Photo taken: {filename}") to show the photo filename taken.
Raspberry Pi
Hint
Use print(f"Photo taken: {filename}") inside the loop to show each photo name.
Practice
(1/5)
1. What is the main purpose of using time-lapse photography with a Raspberry Pi camera?
easy
A. To capture images at set intervals to show slow changes quickly
B. To take a single high-resolution photo
C. To record live video continuously
D. To stream video over the internet in real-time
Solution
Step 1: Understand time-lapse photography concept
Time-lapse photography captures photos at regular intervals to speed up slow processes.
Step 2: Compare options with concept
Only To capture images at set intervals to show slow changes quickly describes capturing images at intervals to show slow changes quickly.
Final Answer:
To capture images at set intervals to show slow changes quickly -> Option A
Quick Check:
Time-lapse = interval photos showing slow changes fast [OK]
Hint: Remember time-lapse means interval shots, not continuous video [OK]
Common Mistakes:
Confusing time-lapse with video recording
Thinking it captures only one photo
Assuming it streams live video
2. Which of the following Python code snippets correctly sets a 5-second delay between photos in a Raspberry Pi time-lapse script?
easy
A. sleep.time(5)
B. time.wait(5)
C. delay(5)
D. time.sleep(5)
Solution
Step 1: Recall correct syntax for delay in Python
The correct function to pause execution is time.sleep(seconds).
Step 2: Check each option
Only time.sleep(5) uses time.sleep(5), which is correct syntax for 5 seconds delay.
Final Answer:
time.sleep(5) -> Option D
Quick Check:
Delay = time.sleep(seconds) [OK]
Hint: Use time.sleep() to pause, not time.wait() or delay() [OK]
Common Mistakes:
Using time.wait() which does not exist
Swapping module and function names
Using undefined delay() function
3. What will be the output of this Raspberry Pi time-lapse code snippet?
from picamera import PiCamera
import time
camera = PiCamera()
camera.start_preview()
for i in range(3):
camera.capture(f'image_{i}.jpg')
time.sleep(2)
camera.stop_preview()
medium
A. No images saved because preview blocks capture
B. Only one image named image_2.jpg saved after 6 seconds
C. Three images named image_0.jpg, image_1.jpg, image_2.jpg saved with 2 seconds delay between each
D. SyntaxError due to incorrect f-string usage
Solution
Step 1: Analyze the loop and capture calls
The loop runs 3 times (i=0,1,2), capturing images named image_0.jpg, image_1.jpg, image_2.jpg.
Step 2: Understand timing between captures
After each capture, the program waits 2 seconds before next capture, so images are spaced by 2 seconds.
Final Answer:
Three images named image_0.jpg, image_1.jpg, image_2.jpg saved with 2 seconds delay between each -> Option C
Hint: Loop count = number of images; sleep controls delay [OK]
Common Mistakes:
Thinking only last image is saved
Confusing preview with capture blocking
Assuming f-string causes error
4. Identify the error in this Raspberry Pi time-lapse code snippet:
from picamera import PiCamera
import time
camera = PiCamera()
for i in range(5):
camera.capture('image_i.jpg')
time.sleep(1)
medium
A. Missing camera.start_preview() before capture
B. The filename 'image_i.jpg' does not change, overwriting images
C. time.sleep() cannot be used inside a loop
D. PiCamera() must be imported after time module
Solution
Step 1: Check filename usage inside loop
The filename is a fixed string 'image_i.jpg', so each capture overwrites the previous image.
Step 2: Verify other code parts
start_preview() is optional; time.sleep() works in loops; import order does not matter here.
Final Answer:
The filename 'image_i.jpg' does not change, overwriting images -> Option B
Quick Check:
Filename must vary to save multiple images [OK]
Hint: Use f-strings or string formatting to vary filenames [OK]
Common Mistakes:
Thinking start_preview() is mandatory
Believing time.sleep() can't be in loops
Assuming import order causes error
5. You want to create a time-lapse video from 10 photos taken every 3 seconds using Raspberry Pi. Which approach correctly combines capturing images and creating the video?
hard
A. Capture images with time.sleep(3) in a loop, then use ffmpeg to combine images into a video
B. Capture images continuously without delay, then rename files manually before video creation
C. Use time.sleep(10) between captures and combine images with a photo viewer
D. Capture images with delay, then upload them directly to YouTube without video creation
Solution
Step 1: Understand time-lapse capture timing
Photos must be taken every 3 seconds, so time.sleep(3) in a loop is correct.
Step 2: Combine images into video
ffmpeg is a common tool to combine sequential images into a video file.
Final Answer:
Capture images with time.sleep(3) in a loop, then use ffmpeg to combine images into a video -> Option A
Quick Check:
Interval capture + ffmpeg video creation = correct workflow [OK]
Hint: Use delay in capture loop + ffmpeg for video [OK]
Common Mistakes:
Skipping delay causing fast captures
Using photo viewer instead of video tool
Uploading images without video creation
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.