Bird
Raised Fist0
Embedded Cprogramming~10 mins

LED control patterns in Embedded C - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - LED control patterns
Start
↓
Initialize LEDs
↓
Set pattern index = 0
↓
Loop Start
↓
Turn ON LEDs according to pattern
↓
Delay for visibility
↓
Turn OFF LEDs
↓
Increment pattern index
↓
Check if pattern index < total patterns?
No→End
↩Back to Loop Start
The program initializes LEDs, then loops through different LED patterns turning them on and off with delays, cycling through all patterns before stopping.
Execution Sample
Embedded C
int patterns[] = {0x01, 0x02, 0x04};
int i = 0;
while(i < 3) {
  LED_PORT = patterns[i];
  delay();
  LED_PORT = 0;
  delay();
  i++;
}
This code cycles through three LED patterns turning each on and off with a delay.
Execution Table
StepiLED_PORT value (hex)ActionOutput
100x01Turn ON first LED patternLED1 ON
200x00Turn OFF LEDsAll LEDs OFF
310x02Turn ON second LED patternLED2 ON
410x00Turn OFF LEDsAll LEDs OFF
520x04Turn ON third LED patternLED3 ON
620x00Turn OFF LEDsAll LEDs OFF
73-Check loop condition i<3Condition false, exit loop
💡 i reaches 3, condition i<3 is false, loop ends
Variable Tracker
VariableStartAfter Step 2After Step 4After Step 6Final
i01233
LED_PORT0x000x000x000x000x00
Key Moments - 3 Insights
Why does LED_PORT get set to 0 after each pattern?
Setting LED_PORT to 0 turns off all LEDs before the next pattern, as shown in steps 2, 4, and 6 in the execution_table.
What happens when i equals 3 in the loop?
At step 7, the condition i<3 is false, so the loop stops running, ending the LED pattern sequence.
Why do we increment i after turning LEDs off?
Incrementing i after turning LEDs off ensures the next pattern is selected in the next loop cycle, as seen between steps 2 and 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of LED_PORT at step 3?
A0x00
B0x01
C0x02
D0x04
💡 Hint
Check the LED_PORT value column at step 3 in the execution_table.
At which step does the loop condition become false?
AStep 7
BStep 6
CStep 3
DStep 1
💡 Hint
Look at the last row in the execution_table where the condition is checked.
If we add a fourth pattern 0x08, how many times will the loop run?
A3 times
B4 times
C5 times
D2 times
💡 Hint
Refer to variable_tracker for i increments and loop condition in execution_table.
Concept Snapshot
LED control patterns use arrays to store LED states.
Loop through each pattern, turn LEDs ON, delay, then OFF.
Increment index to move to next pattern.
Stop when all patterns are shown.
Use hex values to represent LEDs ON/OFF.
Full Transcript
This lesson shows how to control LEDs in patterns using embedded C. The program starts by initializing an array of LED patterns. It uses a loop to turn LEDs on according to each pattern, waits for a delay, then turns LEDs off. The index variable i tracks which pattern is active. After each pattern, i increments. When i reaches the number of patterns, the loop ends. The execution table traces each step, showing LED_PORT values and actions. Key moments clarify why LEDs turn off between patterns and when the loop stops. The quiz tests understanding of LED_PORT values, loop exit, and adding patterns. The snapshot summarizes the pattern control process simply.

Practice

(1/5)
1. What is the main purpose of using LED control patterns in embedded C programming?
easy
A. To create visual effects by turning LEDs on and off in specific sequences
B. To increase the processing speed of the microcontroller
C. To store data in the microcontroller's memory
D. To connect the microcontroller to the internet

Solution

  1. Step 1: Understand LED control patterns

    LED control patterns are used to create visual effects by controlling LEDs.
  2. Step 2: Identify the purpose in embedded systems

    They help show device status or create decorative light sequences by turning LEDs on and off.
  3. Final Answer:

    To create visual effects by turning LEDs on and off in specific sequences -> Option A
  4. Quick Check:

    LED patterns = visual effects [OK]
Hint: LED patterns control lights, not speed or memory [OK]
Common Mistakes:
  • Confusing LED patterns with data storage
  • Thinking LED patterns improve processing speed
  • Assuming LED patterns connect to the internet
2. Which of the following is the correct syntax to turn on an LED connected to pin 5 using embedded C?
easy
A. digitalWrite(HIGH, 5);
B. digitalWrite(5, ON);
C. digitalWrite(5, HIGH);
D. digitalWrite(ON, 5);

Solution

  1. Step 1: Recall digitalWrite syntax

    The function digitalWrite(pin, value) sets the pin to HIGH or LOW.
  2. Step 2: Match correct parameters

    Pin number comes first, then the value HIGH to turn LED on.
  3. Final Answer:

    digitalWrite(5, HIGH); -> Option C
  4. Quick Check:

    digitalWrite(pin, HIGH) = turn LED on [OK]
Hint: Pin number first, then HIGH or LOW [OK]
Common Mistakes:
  • Swapping pin and value order
  • Using ON instead of HIGH
  • Using lowercase for HIGH
3. What will be the output on the LED connected to pin 3 after running this code snippet?
for(int i = 0; i < 3; i++) {
  digitalWrite(3, HIGH);
  delay(500);
  digitalWrite(3, LOW);
  delay(500);
}
medium
A. LED stays OFF continuously
B. LED stays ON continuously for 1.5 seconds
C. LED blinks once and stays OFF
D. LED blinks 3 times with 0.5 second ON and 0.5 second OFF

Solution

  1. Step 1: Analyze the loop iterations

    The loop runs 3 times, each time turning LED ON then OFF with delays.
  2. Step 2: Understand delay timing

    Each ON and OFF lasts 500ms, so LED blinks 3 times with equal ON/OFF intervals.
  3. Final Answer:

    LED blinks 3 times with 0.5 second ON and 0.5 second OFF -> Option D
  4. Quick Check:

    Loop 3 times with delay = 3 blinks [OK]
Hint: Count loop runs and delays for blink count [OK]
Common Mistakes:
  • Ignoring the loop count
  • Confusing delay units
  • Assuming LED stays ON
4. Identify the error in this LED blinking code:
void loop() {
  digitalWrite(2, HIGH);
  delay(1000);
  digitalWrite(2, HIGH);
  delay(1000);
}
medium
A. delay() function is used incorrectly
B. LED never turns OFF because digitalWrite(2, HIGH) is used twice
C. Pin 2 is not set as OUTPUT
D. digitalWrite() syntax is wrong

Solution

  1. Step 1: Check LED ON/OFF commands

    Both digitalWrite calls set pin 2 to HIGH, so LED stays ON.
  2. Step 2: Identify missing OFF command

    LED never turns OFF because digitalWrite(2, LOW) is missing.
  3. Final Answer:

    LED never turns OFF because digitalWrite(2, HIGH) is used twice -> Option B
  4. Quick Check:

    Same HIGH twice = no OFF [OK]
Hint: LED needs HIGH then LOW to blink [OK]
Common Mistakes:
  • Assuming delay is wrong
  • Forgetting to set pin mode
  • Thinking syntax is incorrect
5. You want to create a running LED pattern on 4 LEDs connected to pins 2, 3, 4, and 5. Which code snippet correctly implements this pattern?
hard
A. for(int i = 2; i <= 5; i++) { digitalWrite(i, HIGH); delay(200); digitalWrite(i, LOW); }
B. for(int i = 2; i <= 5; i++) { digitalWrite(i, LOW); delay(200); digitalWrite(i, HIGH); }
C. digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); delay(200); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW);
D. for(int i = 5; i >= 2; i--) { digitalWrite(i, HIGH); delay(200); }

Solution

  1. Step 1: Understand running LED pattern

    Running LED means turning ON one LED at a time in sequence, then OFF before next.
  2. Step 2: Analyze each option

    for(int i = 2; i <= 5; i++) { digitalWrite(i, HIGH); delay(200); digitalWrite(i, LOW); } loops from pin 2 to 5, turns each LED ON, delays, then OFF, creating running effect.
  3. Final Answer:

    for(int i = 2; i <= 5; i++) { digitalWrite(i, HIGH); delay(200); digitalWrite(i, LOW); } -> Option A
  4. Quick Check:

    Loop ON then OFF per LED = running pattern [OK]
Hint: Turn ON then OFF each LED in order [OK]
Common Mistakes:
  • Turning all LEDs ON at once
  • Not turning off the LED after delay
  • Turning LEDs OFF before ON
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