LED

Lab 3: LED Widget Control

1. ΰΉ‚ΰΈ„ΰΈ£ΰΈ‡ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ΰΈ ΰΈ²ΰΈžΰΈ£ΰΈ§ΰΈ‘ΰΈ‚ΰΈ­ΰΈ‡ Lab

Why? - ΰΈ—ΰΈ³ΰΉ„ΰΈ‘ΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ΰΈ£ΰΈΉΰΉ‰ΰΉ€ΰΈ£ΰΈ·ΰΉˆΰΈ­ΰΈ‡ΰΈ™ΰΈ΅ΰΉ‰

LED Widget ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ΰΉ€ΰΈ„ΰΈ£ΰΈ·ΰΉˆΰΈ­ΰΈ‡ΰΈ‘ΰΈ·ΰΈ­ΰΈͺำคัญΰΈͺำหรับแΰΈͺΰΈ”ΰΈ‡ΰΈͺΰΈ–ΰΈ²ΰΈ™ΰΈ°:

  • Visual Feedback: แΰΈͺΰΈ”ΰΈ‡ΰΈͺΰΈ–ΰΈ²ΰΈ™ΰΈ° ON/OFF ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡ΰΈŠΰΈ±ΰΈ”ΰΉ€ΰΈˆΰΈ™

  • Status Indicator: ΰΉƒΰΈŠΰΉ‰ΰΉΰΈͺΰΈ”ΰΈ‡ΰΈͺΰΈ–ΰΈ²ΰΈ™ΰΈ° GPIO, Connection, Error

  • Brightness Control: ΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ–ΰΈ„ΰΈ§ΰΈšΰΈ„ΰΈΈΰΈ‘ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈͺΰΈ§ΰΉˆΰΈ²ΰΈ‡ΰΉ„ΰΈ”ΰΉ‰ (0-255)

  • Multiple Colors: ΰΈ£ΰΈ­ΰΈ‡ΰΈ£ΰΈ±ΰΈšΰΈͺΰΈ΅ΰΈ•ΰΉˆΰΈ²ΰΈ‡ΰΉ† ΰΈ•ΰΈ²ΰΈ‘ Palette

What? - ΰΈˆΰΈ°ΰΉ„ΰΈ”ΰΉ‰ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ΰΈ£ΰΈΉΰΉ‰ΰΈ­ΰΈ°ΰΉ„ΰΈ£

  1. LED Widget: ΰΈͺร้างแΰΈ₯ΰΈ°ΰΈ„ΰΈ§ΰΈšΰΈ„ΰΈΈΰΈ‘ LED ΰΈ”ΰΉ‰ΰΈ§ΰΈ’ LVGL

  2. ON/OFF Control: ΰΉƒΰΈŠΰΉ‰ lv_led_on() แΰΈ₯ΰΈ° lv_led_off()

  3. Brightness: ΰΈ›ΰΈ£ΰΈ±ΰΈšΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈͺΰΈ§ΰΉˆΰΈ²ΰΈ‡ΰΈ”ΰΉ‰ΰΈ§ΰΈ’ lv_led_set_brightness()

  4. Slider Widget: ΰΈ„ΰΈ§ΰΈšΰΈ„ΰΈΈΰΈ‘ΰΈ„ΰΉˆΰΈ²ΰΈ•ΰΉˆΰΈ­ΰΉ€ΰΈ™ΰΈ·ΰΉˆΰΈ­ΰΈ‡ΰΈ”ΰΉ‰ΰΈ§ΰΈ’ Slider

  5. Multiple Callbacks: ผูกหΰΈ₯ΰΈ²ΰΈ’ callback กับหΰΈ₯ΰΈ²ΰΈ’ widget

How? - ΰΈ—ΰΈ³ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡ΰΉ„ΰΈ£

ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ Virtual LED ΰΈ—ΰΈ΅ΰΉˆΰΈ„ΰΈ§ΰΈšΰΈ„ΰΈΈΰΈ‘ΰΉ„ΰΈ”ΰΉ‰ΰΈ”ΰΉ‰ΰΈ§ΰΈ’ΰΈ›ΰΈΈΰΉˆΰΈ‘ ON/OFF แΰΈ₯ΰΈ° Slider ΰΈ›ΰΈ£ΰΈ±ΰΈšΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈͺΰΈ§ΰΉˆΰΈ²ΰΈ‡


2. ΰΈ«ΰΈ₯ักการทำงานแΰΈ₯ΰΈ° Flowchart

2.1 LED Widget Architecture

2.2 Slider Widget Architecture

2.3 Program Flowchart


3. ΰΈŸΰΈ±ΰΈ‡ΰΈΰΉŒΰΈŠΰΈ±ΰΈ™ΰΈͺำคัญ

3.1 LED Functions

Function
Description
Parameters

lv_led_create(parent)

ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ LED widget

parent: object ΰΈ«ΰΈ₯ัก

lv_led_on(led)

ΰΉ€ΰΈ›ΰΈ΄ΰΈ” LED (brightness=255)

led: LED object

lv_led_off(led)

ΰΈ›ΰΈ΄ΰΈ” LED (brightness=0)

led: LED object

lv_led_toggle(led)

ΰΈͺΰΈ₯ับΰΈͺΰΈ–ΰΈ²ΰΈ™ΰΈ° ON/OFF

led: LED object

lv_led_set_brightness(led, value)

ΰΈ•ΰΈ±ΰΉ‰ΰΈ‡ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈͺΰΈ§ΰΉˆΰΈ²ΰΈ‡ 0-255

led, value

lv_led_get_brightness(led)

ΰΈ­ΰΉˆΰΈ²ΰΈ™ΰΈ„ΰΉˆΰΈ²ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈͺΰΈ§ΰΉˆΰΈ²ΰΈ‡

led

lv_led_set_color(led, color)

ΰΈ•ΰΈ±ΰΉ‰ΰΈ‡ΰΈͺΰΈ΅ LED

led, lv_color_t

3.2 Slider Functions

Function
Description
Parameters

lv_slider_create(parent)

ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ Slider

parent

lv_slider_set_value(slider, val, anim)

ΰΈ•ΰΈ±ΰΉ‰ΰΈ‡ΰΈ„ΰΉˆΰΈ²

slider, value, animation

lv_slider_get_value(slider)

ΰΈ­ΰΉˆΰΈ²ΰΈ™ΰΈ„ΰΉˆΰΈ²

slider

lv_slider_set_range(slider, min, max)

ΰΈ•ΰΈ±ΰΉ‰ΰΈ‡ΰΈŠΰΉˆΰΈ§ΰΈ‡ΰΈ„ΰΉˆΰΈ²

slider, min, max

lv_slider_set_mode(slider, mode)

ΰΈ•ΰΈ±ΰΉ‰ΰΈ‡ΰΉ‚ΰΈ«ΰΈ‘ΰΈ”

slider, mode

3.3 LVGL Color Palette


4. Code Example

4.1 Complete Code

4.2 Code Breakdown

Part 1: Global Variables

Why Global?

  • ΰΈ«ΰΈ₯ΰΈ²ΰΈ’ callback ต้องการ access เดมฒวกัน

  • ΰΉƒΰΈŠΰΉ‰ static ΰΈˆΰΈ³ΰΈΰΈ±ΰΈ” scope ΰΈ ΰΈ²ΰΈ’ΰΉƒΰΈ™ΰΉ„ΰΈŸΰΈ₯์

Part 2: LED Creation with Initial Value

Part 3: Slider with Range


5. ΰΈ­ΰΈ‡ΰΈ„ΰΉŒΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈ£ΰΈΉΰΉ‰ΰΉΰΈ₯ΰΈ°ΰΉ€ΰΈ—ΰΈ„ΰΈ™ΰΈ΄ΰΈ„

5.1 Brightness to Percentage Conversion

5.2 Widget Alignment Relative to Another

Alignment options relative to another object:

5.3 Slider Styling

5.4 LED Color Styles


6. ΰΉΰΈšΰΈšΰΈΰΈΆΰΈΰΈ«ΰΈ±ΰΈ”

Exercise 1: RGB LED Mixer (Easy)

ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ 3 Sliders ΰΈͺΰΈ³ΰΈ«ΰΈ£ΰΈ±ΰΈšΰΈ›ΰΈ£ΰΈ±ΰΈšΰΈ„ΰΉˆΰΈ² R, G, B ΰΈ‚ΰΈ­ΰΈ‡ LED แฒกกัน

Expected Output:

Hints:

  • ΰΉƒΰΈŠΰΉ‰ 3 global variables ΰΈͺำหรับ R, G, B

  • lv_color_make(r, g, b) ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ΰΈͺΰΈ΅

  • ΰΉΰΈ•ΰΉˆΰΈ₯ΰΈ° slider ΰΈ‘ΰΈ΅ range 0-255


Exercise 2: Traffic Light (Medium)

ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ Traffic Light ΰΈ‘ΰΈ΅ 3 LEDs (Red, Yellow, Green) ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΈ₯ΰΈ±ΰΈšΰΈ­ΰΈ±ΰΈ•ΰΉ‚ΰΈ™ΰΈ‘ΰΈ±ΰΈ•ΰΈ΄

Expected Output:

Hints:

  • ΰΉƒΰΈŠΰΉ‰ lv_timer_create() ΰΈͺำหรับ auto-switch

  • ΰΈ‘ΰΈ΅ states: RED(5s) β†’ GREEN(5s) β†’ YELLOW(2s) β†’ RED


Exercise 3: Breathing LED (Advanced)

ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ LED ΰΈ—ΰΈ΅ΰΉˆΰΈ„ΰΉˆΰΈ­ΰΈ’ΰΉ† ΰΈͺΰΈ§ΰΉˆΰΈ²ΰΈ‡-ΰΈ‘ΰΈ·ΰΈ” แบบ breathing effect

Hints:

  • ΰΉƒΰΈŠΰΉ‰ lv_timer_create() เรมฒก callback ทุก 20ms

  • ΰΉƒΰΈŠΰΉ‰ sine wave ΰΈ«ΰΈ£ΰΈ·ΰΈ­ linear ramp

  • Fade up: 0β†’255, Fade down: 255β†’0


7. References


Previous Lab: Lab 2: Button with Counter Next Lab: Lab 4: Switch Toggle

Last updated

Was this helpful?