Advance HMI Display

ΰΈͺΰΉˆΰΈ§ΰΈ™ΰΈ—ΰΈ΅ΰΉˆ 1: ภาพรวฑ LVGL (20 ΰΈ™ΰΈ²ΰΈ—ΰΈ΅)

1.1 LVGL ΰΈ„ΰΈ·ΰΈ­ΰΈ­ΰΈ°ΰΉ„ΰΈ£?

LVGL (Light and Versatile Graphics Library) ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ Open Source Graphics Library ΰΈͺำหรับ Embedded Systems

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     LVGL ARCHITECTURE                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚              APPLICATION LAYER                       β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚   β”‚
β”‚  β”‚  β”‚ Button β”‚  β”‚ Label  β”‚  β”‚ Slider β”‚  β”‚ Chart  β”‚      β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜      β”‚   β”‚
β”‚  β”‚      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚   β”‚
β”‚  β”‚                      β”‚                               β”‚   β”‚
β”‚  β”‚               β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”                        β”‚   β”‚
β”‚  β”‚               β”‚  lv_obj_t   β”‚  (Base Object)         β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                         β”‚                                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                CORE LAYER                            β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”‚   β”‚
β”‚  β”‚  β”‚  Timer  β”‚  β”‚  Display  β”‚  β”‚  Input  β”‚             β”‚   β”‚
β”‚  β”‚  β”‚ Handler β”‚  β”‚  Manager  β”‚  β”‚ Device  β”‚             β”‚   β”‚
β”‚  β””β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                         β”‚                                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚              HARDWARE LAYER                          β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                β”‚   β”‚
β”‚  β”‚  β”‚  LCD Display  β”‚  β”‚  Touch Panel  β”‚                β”‚   β”‚
β”‚  β”‚  β”‚  (MIPI-DSI)   β”‚  β”‚  (I2C)        β”‚                β”‚   β”‚
β”‚  β””β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

1.2 Display Options

Display
Resolution
Interface
Touch

4.3" Waveshare

800 x 480

MIPI-DSI

FT5406 (I2C)

7" Waveshare

1024 x 600

MIPI-DSI

GT911 (I2C)


1.3 LVGL Core Concepts

Concept
ΰΈ„ΰΈ³ΰΈ­ΰΈ˜ΰΈ΄ΰΈšΰΈ²ΰΈ’

Display

ΰΈžΰΈ·ΰΉ‰ΰΈ™ΰΈ—ΰΈ΅ΰΉˆΰΉΰΈͺΰΈ”ΰΈ‡ΰΈœΰΈ₯ΰΈ—ΰΈ±ΰΉ‰ΰΈ‡ΰΈ«ΰΈ‘ΰΈ”

Screen

ΰΈ«ΰΈ™ΰΉ‰ΰΈ²ΰΈˆΰΈ­ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΈ₯ΰΈ±ΰΈšΰΉ„ΰΈ”ΰΉ‰ (container ΰΈ«ΰΈ₯ัก)

Widget (Object)

UI element ΰΉ€ΰΈŠΰΉˆΰΈ™ Button, Label

Style

ΰΈΰΈ²ΰΈ£ΰΈ•ΰΈΰΉΰΈ•ΰΉˆΰΈ‡ (ΰΈͺΰΈ΅, ΰΈ‚ΰΈ™ΰΈ²ΰΈ”, font)

Event

ΰΈΰΈ²ΰΈ£ΰΈ•ΰΈ­ΰΈšΰΈͺΰΈ™ΰΈ­ΰΈ‡ΰΈ•ΰΉˆΰΈ­ user interaction

1.4 LVGL Layout แΰΈ₯ΰΈ° Positioning ΰΈžΰΈ·ΰΉ‰ΰΈ™ΰΈΰΈ²ΰΈ™

ΰΈ«ΰΈ‘ΰΈ²ΰΈ’ΰΉ€ΰΈ«ΰΈ•ΰΈΈ: ΰΈͺΰΉˆΰΈ§ΰΈ™ΰΈ™ΰΈ΅ΰΉ‰ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ΰΈžΰΈ·ΰΉ‰ΰΈ™ΰΈΰΈ²ΰΈ™ΰΈͺΰΈ³ΰΈ„ΰΈ±ΰΈΰΈ—ΰΈ΅ΰΉˆΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈˆΰΈΰΉˆΰΈ­ΰΈ™ΰΉ€ΰΈ£ΰΈ΄ΰΉˆΰΈ‘ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ UI ΰΈˆΰΈ£ΰΈ΄ΰΈ‡ ΰΉ€ΰΈžΰΈ£ΰΈ²ΰΈ°ΰΈΰΈ²ΰΈ£ΰΈ§ΰΈ²ΰΈ‡ΰΈ•ΰΈ³ΰΉΰΈ«ΰΈ™ΰΉˆΰΈ‡ΰΈ—ΰΈ΅ΰΉˆΰΈœΰΈ΄ΰΈ”ΰΈžΰΈ₯ΰΈ²ΰΈ”ΰΈˆΰΈ°ΰΈ—ΰΈ³ΰΉƒΰΈ«ΰΉ‰ Widget แΰΈͺΰΈ”ΰΈ‡ΰΈœΰΈ₯ΰΉ„ΰΈ‘ΰΉˆΰΈ–ΰΈΉΰΈΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈ«ΰΈ£ΰΈ·ΰΈ­ΰΈ«ΰΈ²ΰΈ’ΰΉ„ΰΈ›ΰΈˆΰΈ²ΰΈΰΈˆΰΈ­

ΰΈ«ΰΈ™ΰΉ‰ΰΈ²ΰΈˆΰΈ­ΰΉΰΈ₯ΰΈ°ΰΈ£ΰΈ°ΰΈšΰΈšΰΈžΰΈ΄ΰΈΰΈ±ΰΈ” (Screen & Coordinate System)

ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯จอภาพ PSoC Edge E84 Eval Kit:

ΰΈ£ΰΈ°ΰΈšΰΈšΰΈžΰΈ΄ΰΈΰΈ±ΰΈ”ΰΈ‚ΰΈ­ΰΈ‡ LVGL:

ΰΈ›ΰΈ£ΰΈ°ΰΉ€ΰΈ ΰΈ—ΰΈΰΈ²ΰΈ£ΰΈˆΰΈ±ΰΈ”ΰΈ•ΰΈ³ΰΉΰΈ«ΰΈ™ΰΉˆΰΈ‡ (Alignment Types)

LVGL v9.2 ΰΈ‘ΰΈ΅ 2 กΰΈ₯ุ่ฑหΰΈ₯ักของ alignment:

กΰΈ₯ุ่ฑ 1: Align ΰΈ ΰΈ²ΰΈ’ΰΉƒΰΈ™ Parent (ΰΉƒΰΈŠΰΉ‰ΰΈΰΈ±ΰΈš lv_obj_align)

Constant
ΰΈ•ΰΈ³ΰΉΰΈ«ΰΈ™ΰΉˆΰΈ‡
ΰΈΰΈ²ΰΈ£ΰΉƒΰΈŠΰΉ‰ΰΈ‡ΰΈ²ΰΈ™ΰΈ—ΰΈ΅ΰΉˆΰΉ€ΰΈ«ΰΈ‘ΰΈ²ΰΈ°ΰΈͺΰΈ‘

LV_ALIGN_TOP_LEFT

ΰΈ‘ΰΈΈΰΈ‘ΰΈ‹ΰΉ‰ΰΈ²ΰΈ’ΰΈšΰΈ™

Default position

LV_ALIGN_TOP_MID

กΰΈ₯ΰΈ²ΰΈ‡ΰΈšΰΈ™

Title, Header

LV_ALIGN_TOP_RIGHT

ΰΈ‘ΰΈΈΰΈ‘ΰΈ‚ΰΈ§ΰΈ²ΰΈšΰΈ™

Close button, Status

LV_ALIGN_LEFT_MID

กΰΈ₯ΰΈ²ΰΈ‡ΰΈ‹ΰΉ‰ΰΈ²ΰΈ’

Side panel items

LV_ALIGN_CENTER

กΰΈ₯ΰΈ²ΰΈ‡ΰΈˆΰΈ­

Main content

LV_ALIGN_RIGHT_MID

กΰΈ₯ΰΈ²ΰΈ‡ΰΈ‚ΰΈ§ΰΈ²

Side panel items

LV_ALIGN_BOTTOM_LEFT

ΰΈ‘ΰΈΈΰΈ‘ΰΈ‹ΰΉ‰ΰΈ²ΰΈ’ΰΈ₯ΰΉˆΰΈ²ΰΈ‡

Footer buttons

LV_ALIGN_BOTTOM_MID

กΰΈ₯ΰΈ²ΰΈ‡ΰΈ₯ΰΉˆΰΈ²ΰΈ‡

Description, Footer

LV_ALIGN_BOTTOM_RIGHT

ΰΈ‘ΰΈΈΰΈ‘ΰΈ‚ΰΈ§ΰΈ²ΰΈ₯ΰΉˆΰΈ²ΰΈ‡

Action buttons

ΰΉΰΈœΰΈ™ΰΈ ΰΈ²ΰΈž Alignment ΰΈ ΰΈ²ΰΈ’ΰΉƒΰΈ™ Parent:

กΰΈ₯ุ่ฑ 2: Align ภาฒนอก Object ΰΈ­ΰΉ‰ΰΈ²ΰΈ‡ΰΈ­ΰΈ΄ΰΈ‡ (ΰΉƒΰΈŠΰΉ‰ΰΈΰΈ±ΰΈš lv_obj_align_to)

Constant
ΰΈ•ΰΈ³ΰΉΰΈ«ΰΈ™ΰΉˆΰΈ‡ΰΈˆΰΈ²ΰΈ Object ΰΈ­ΰΉ‰ΰΈ²ΰΈ‡ΰΈ­ΰΈ΄ΰΈ‡

LV_ALIGN_OUT_TOP_LEFT

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈšΰΈ™ ΰΈŠΰΈ΄ΰΈ”ΰΈ‹ΰΉ‰ΰΈ²ΰΈ’

LV_ALIGN_OUT_TOP_MID

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈšΰΈ™ กΰΈ₯ΰΈ²ΰΈ‡

LV_ALIGN_OUT_TOP_RIGHT

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈšΰΈ™ ΰΈŠΰΈ΄ΰΈ”ΰΈ‚ΰΈ§ΰΈ²

LV_ALIGN_OUT_BOTTOM_LEFT

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ₯ΰΉˆΰΈ²ΰΈ‡ ΰΈŠΰΈ΄ΰΈ”ΰΈ‹ΰΉ‰ΰΈ²ΰΈ’

LV_ALIGN_OUT_BOTTOM_MID

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ₯ΰΉˆΰΈ²ΰΈ‡ กΰΈ₯ΰΈ²ΰΈ‡

LV_ALIGN_OUT_BOTTOM_RIGHT

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ₯ΰΉˆΰΈ²ΰΈ‡ ΰΈŠΰΈ΄ΰΈ”ΰΈ‚ΰΈ§ΰΈ²

LV_ALIGN_OUT_LEFT_TOP

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ‹ΰΉ‰ΰΈ²ΰΈ’ ΰΈŠΰΈ΄ΰΈ”ΰΈšΰΈ™

LV_ALIGN_OUT_LEFT_MID

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ‹ΰΉ‰ΰΈ²ΰΈ’ กΰΈ₯ΰΈ²ΰΈ‡

LV_ALIGN_OUT_LEFT_BOTTOM

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ‹ΰΉ‰ΰΈ²ΰΈ’ ΰΈŠΰΈ΄ΰΈ”ΰΈ₯ΰΉˆΰΈ²ΰΈ‡

LV_ALIGN_OUT_RIGHT_TOP

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ‚ΰΈ§ΰΈ² ΰΈŠΰΈ΄ΰΈ”ΰΈšΰΈ™

LV_ALIGN_OUT_RIGHT_MID

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ‚ΰΈ§ΰΈ² กΰΈ₯ΰΈ²ΰΈ‡

LV_ALIGN_OUT_RIGHT_BOTTOM

ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ‚ΰΈ§ΰΈ² ΰΈŠΰΈ΄ΰΈ”ΰΈ₯ΰΉˆΰΈ²ΰΈ‡

ΰΈ•ΰΈ±ΰΈ§ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΉƒΰΈŠΰΉ‰ OUT_* Alignment:

Last updated

Was this helpful?