Single LED control in Raspberry Pi - Time & Space Complexity
When controlling a single LED on a Raspberry Pi, it's helpful to understand how the program's running time changes as we repeat actions.
We want to see how the time grows when we turn the LED on and off multiple times.
Analyze the time complexity of the following code snippet.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
for i in range(n):
GPIO.output(18, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(18, GPIO.LOW)
time.sleep(0.5)
GPIO.cleanup()
This code turns an LED on and off n times with a half-second pause each time.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The
forloop that turns the LED on and off repeatedly. - How many times: Exactly
ntimes, wherenis the number of cycles.
Each time we increase n, the program runs the on/off cycle that many times, so the total work grows directly with n.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 on/off cycles |
| 100 | 100 on/off cycles |
| 1000 | 1000 on/off cycles |
Pattern observation: The total time grows evenly as n increases; doubling n doubles the work.
Time Complexity: O(n)
This means the time to complete the LED blinking grows directly in proportion to the number of times we blink it.
[X] Wrong: "The LED blinking time stays the same no matter how many times it blinks."
[OK] Correct: Each blink takes time, so more blinks mean more total time. The program runs the on/off steps for each blink, so time adds up.
Understanding how loops affect running time is a key skill. It helps you explain how your code will behave as tasks repeat more times, which is useful in many real projects.
"What if we added a nested loop inside the existing loop to blink the LED multiple times per cycle? How would the time complexity change?"