LED Control

Lab 6: Hardware LED Control

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

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

ΰΈ™ΰΈ΅ΰΉˆΰΈ„ΰΈ·ΰΈ­ Lab ΰΉΰΈ£ΰΈΰΈ—ΰΈ΅ΰΉˆΰΉ€ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΈ‘ΰΈ•ΰΉˆΰΈ­ Hardware ΰΈˆΰΈ£ΰΈ΄ΰΈ‡:

  • UI β†’ Hardware: ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ΰΈ£ΰΈΉΰΉ‰ΰΈΰΈ²ΰΈ£ΰΈ„ΰΈ§ΰΈšΰΈ„ΰΈΈΰΈ‘ LED ΰΈˆΰΈ£ΰΈ΄ΰΈ‡ΰΈšΰΈ™ΰΈšΰΈ­ΰΈ£ΰΉŒΰΈ”

  • GPIO API: ΰΉƒΰΈŠΰΉ‰ aic_gpio_* functions

  • PWM Dimming: ΰΈ„ΰΈ§ΰΈšΰΈ„ΰΈΈΰΈ‘ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈͺΰΈ§ΰΉˆΰΈ²ΰΈ‡ LED ΰΈ”ΰΉ‰ΰΈ§ΰΈ’ PWM

  • Reusable UI: ΰΈ™ΰΈ³ UI จาก Part I ΰΈ‘ΰΈ²ΰΉƒΰΈŠΰΉ‰ΰΈ‹ΰΉ‰ΰΈ³ΰΈΰΈ±ΰΈš Hardware

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

  1. GPIO Initialization: เรมฒก aic_gpio_init() ΰΈΰΉˆΰΈ­ΰΈ™ΰΉƒΰΈŠΰΉ‰ΰΈ‡ΰΈ²ΰΈ™

  2. LED Control: aic_gpio_led_set() ΰΈͺำหรับ ON/OFF

  3. PWM Control: aic_gpio_pwm_set_brightness() ΰΈͺำหรับ dimming

  4. Hardware Limitation: ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈˆΰΈ‚ΰΉ‰ΰΈ­ΰΈˆΰΈ³ΰΈΰΈ±ΰΈ” PWM (Blue LED ΰΉ€ΰΈ—ΰΉˆΰΈ²ΰΈ™ΰΈ±ΰΉ‰ΰΈ™)

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

ΰΈ›ΰΈ£ΰΈ±ΰΈš Ex3 (LED Widget Control) ΰΉƒΰΈ«ΰΉ‰ΰΈ„ΰΈ§ΰΈšΰΈ„ΰΈΈΰΈ‘ LED ΰΈˆΰΈ£ΰΈ΄ΰΈ‡ΰΈšΰΈ™ΰΈšΰΈ­ΰΈ£ΰΉŒΰΈ”


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

2.1 Hardware Configuration

2.2 API Usage Pattern

2.3 Program Flow


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

3.1 GPIO API (aic-eec/gpio.h)

Function
Description
Parameters

aic_gpio_init()

Initialize GPIO subsystem

-

aic_gpio_led_set(led, state)

Set LED ON/OFF

led: AIC_LED_*, state: bool

aic_gpio_led_toggle(led)

Toggle LED state

led: AIC_LED_*

aic_gpio_led_get(led)

Get current LED state

led: AIC_LED_*

aic_gpio_pwm_init(led)

Initialize PWM for LED

led: AIC_LED_BLUE only

aic_gpio_pwm_set_brightness(led, %)

Set brightness 0-100%

led, percent

3.2 LED Types


4. Code Example

4.1 Key Changes from Part I

4.2 Initialization

4.3 Slider with PWM


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

5.1 PWM Limitation

5.2 Brightness Conversion

5.3 UI + Hardware Sync Pattern


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

Exercise 1: RGB Pattern

ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ—ΰΈ΅ΰΉˆΰΉΰΈͺΰΈ”ΰΈ‡ LED pattern:

  • ΰΈΰΈ”ΰΈ›ΰΈΈΰΉˆΰΈ‘ "Pattern" β†’ ΰΉ„ΰΈŸΰΈ§ΰΈ΄ΰΉˆΰΈ‡ R β†’ G β†’ B (1 ΰΈ§ΰΈ΄ΰΈ™ΰΈ²ΰΈ—ΰΈ΅ΰΈ•ΰΉˆΰΈ­ LED)

Hints:

  • ΰΉƒΰΈŠΰΉ‰ lv_timer_create()

  • ΰΉ€ΰΈΰΉ‡ΰΈš state ΰΈ§ΰΉˆΰΈ²ΰΈ•ΰΈ­ΰΈ™ΰΈ™ΰΈ΅ΰΉ‰ LED ΰΉ„ΰΈ«ΰΈ™ΰΈ•ΰΈ΄ΰΈ”

Exercise 2: Brightness Sync

ΰΈ›ΰΈ£ΰΈ±ΰΈšΰΈ›ΰΈ£ΰΈΈΰΈ‡ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΉƒΰΈ«ΰΉ‰:

  • ON/OFF buttons ΰΈ„ΰΈ§ΰΈšΰΈ„ΰΈΈΰΈ‘ Green LED

  • Slider ΰΈ„ΰΈ§ΰΈšΰΈ„ΰΈΈΰΈ‘ Blue LED (PWM)

  • แΰΈͺΰΈ”ΰΈ‡ Virtual LED ΰΈ—ΰΈ±ΰΉ‰ΰΈ‡ 2 ΰΈͺΰΈ΅ΰΈšΰΈ™ΰΈ«ΰΈ™ΰΉ‰ΰΈ²ΰΈˆΰΈ­


7. References

  • aic-eec GPIO API

  • Part I Ex3: LED Widget Control


Next Lab: Lab 7: Hardware Button Status

Last updated

Was this helpful?