Label

Lab 1: Hello World - Basic Label


1. ΰΈ ΰΈ²ΰΈžΰΈ£ΰΈ§ΰΈ‘ΰΈ‚ΰΈ­ΰΈ‡ Lab (Why? What? How?)

Why?: ΰΈ§ΰΈ±ΰΈ•ΰΈ–ΰΈΈΰΈ›ΰΈ£ΰΈ°ΰΈͺΰΈ‡ΰΈ„ΰΉŒΰΈΰΈ²ΰΈ£ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ΰΈ£ΰΈΉΰΉ‰

Label ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ Widget ΰΈžΰΈ·ΰΉ‰ΰΈ™ΰΈΰΈ²ΰΈ™ΰΈ—ΰΈ΅ΰΉˆΰΈͺุดแΰΈ₯ΰΈ°ΰΈͺΰΈ³ΰΈ„ΰΈ±ΰΈΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΈΈΰΈ”ΰΉƒΰΈ™ LVGL:

  • แΰΈͺΰΈ”ΰΈ‡ΰΈ„ΰΉˆΰΈ²ΰΈˆΰΈ²ΰΈ Sensor (ΰΈ­ΰΈΈΰΈ“ΰΈ«ΰΈ ΰΈΉΰΈ‘ΰΈ΄, ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈŠΰΈ·ΰΉ‰ΰΈ™, ADC)

  • แΰΈͺΰΈ”ΰΈ‡ Status Messages (Connected, Error, Ready)

  • ΰΉƒΰΈŠΰΉ‰ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ Debug Output ΰΈšΰΈ™ΰΈ«ΰΈ™ΰΉ‰ΰΈ²ΰΈˆΰΈ­ΰΉΰΈ—ΰΈ™ UART

  • ΰΈ—ΰΈΈΰΈΰΉΰΈ­ΰΈ›ΰΈžΰΈ₯ΰΈ΄ΰΉ€ΰΈ„ΰΈŠΰΈ±ΰΈ™ ΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈ‘ΰΈ΅ Label ΰΉ€ΰΈžΰΈ·ΰΉˆΰΈ­ΰΈͺื่อΰΈͺΰΈ²ΰΈ£ΰΈΰΈ±ΰΈšΰΈœΰΈΉΰΉ‰ΰΉƒΰΈŠΰΉ‰

What?: ΰΉ€ΰΈ£ΰΈ²ΰΈˆΰΈ°ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ΰΈ£ΰΈΉΰΉ‰ΰΈ­ΰΈ°ΰΉ„ΰΈ£?

ΰΈŸΰΈ±ΰΈ‡ΰΈΰΉŒΰΈŠΰΈ±ΰΈ™
ΰΈ«ΰΈ™ΰΉ‰ΰΈ²ΰΈ—ΰΈ΅ΰΉˆ

lv_label_create()

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

lv_label_set_text()

ΰΈ•ΰΈ±ΰΉ‰ΰΈ‡ΰΈ„ΰΉˆΰΈ²ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘

lv_obj_set_style_text_color()

ΰΉ€ΰΈ›ΰΈ₯ΰΈ΅ΰΉˆΰΈ’ΰΈ™ΰΈͺΰΈ΅ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘

lv_obj_set_style_bg_color()

ΰΉ€ΰΈ›ΰΈ₯ΰΈ΅ΰΉˆΰΈ’ΰΈ™ΰΈͺΰΈ΅ΰΈžΰΈ·ΰΉ‰ΰΈ™ΰΈ«ΰΈ₯ΰΈ±ΰΈ‡

lv_obj_align()

ΰΈˆΰΈ±ΰΈ”ΰΈ•ΰΈ³ΰΉΰΈ«ΰΈ™ΰΉˆΰΈ‡ Widget

How: ΰΈ™ΰΈ³ΰΉ„ΰΈ›ΰΉƒΰΈŠΰΉ‰ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡ΰΉ„ΰΈ£?


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

2.1 ΰΉ‚ΰΈ„ΰΈ£ΰΈ‡ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ Label Widget

2.2 Flowchart การΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ Label

2.3 Layout ΰΈ‚ΰΈ­ΰΈ‡ Example 1


3. ΰΉ‚ΰΈ„ΰΉ‰ΰΈ”ΰΈ•ΰΈ±ΰΈ§ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡


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

4.1 lv_label_create() - ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ Label

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

parent

Parent object (ปกติคือ lv_screen_active())

Return

Pointer ΰΉ„ΰΈ›ΰΈ’ΰΈ±ΰΈ‡ Label object

4.2 lv_label_set_text() - ΰΈ•ΰΈ±ΰΉ‰ΰΈ‡ΰΈ„ΰΉˆΰΈ²ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘

ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ£ΰΈ£ΰΈ°ΰΈ§ΰΈ±ΰΈ‡: ΰΈŸΰΈ±ΰΈ‡ΰΈΰΉŒΰΈŠΰΈ±ΰΈ™ΰΈ™ΰΈ΅ΰΉ‰ copy string ทุกครั้ง (ΰΉƒΰΈŠΰΉ‰ memory)

ΰΈ—ΰΈ²ΰΈ‡ΰΉ€ΰΈ₯ือก:

4.3 lv_obj_set_style_text_color() - ΰΉ€ΰΈ›ΰΈ₯ΰΈ΅ΰΉˆΰΈ’ΰΈ™ΰΈͺΰΈ΅ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘

ΰΈͺΰΈ΅ΰΈ—ΰΈ΅ΰΉˆΰΉƒΰΈŠΰΉ‰ΰΈšΰΉˆΰΈ­ΰΈ’:

ΰΈͺΰΈ΅
Hex Code

ΰΈ‚ΰΈ²ΰΈ§

0xFFFFFF

ΰΉ€ΰΈ—ΰΈ²

0xAAAAAA

ΰΉ€ΰΈ‚ΰΈ΅ΰΈ’ΰΈ§

0x00FF00

แดง

0xFF0000

ΰΈ™ΰΉ‰ΰΈ³ΰΉ€ΰΈ‡ΰΈ΄ΰΈ™

0x0000FF

4.4 lv_obj_set_style_text_font() - ΰΉ€ΰΈ›ΰΈ₯ΰΈ΅ΰΉˆΰΈ’ΰΈ™ Font

Font ΰΈ—ΰΈ΅ΰΉˆΰΈ‘ΰΈ΅ΰΉƒΰΈ«ΰΉ‰ΰΉƒΰΈŠΰΉ‰:

  • lv_font_montserrat_14 - ΰΉ€ΰΈ₯็ก

  • lv_font_montserrat_16 - ปกติ

  • lv_font_montserrat_24 - ΰΉƒΰΈ«ΰΈΰΉˆ

  • lv_font_montserrat_28 - ΰΉƒΰΈ«ΰΈΰΉˆΰΈ‘ΰΈ²ΰΈ

4.5 lv_obj_set_style_bg_color() - ΰΉ€ΰΈ›ΰΈ₯ΰΈ΅ΰΉˆΰΈ’ΰΈ™ΰΈͺΰΈ΅ΰΈžΰΈ·ΰΉ‰ΰΈ™ΰΈ«ΰΈ₯ΰΈ±ΰΈ‡


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

5.1 Pattern: Vertical Stacking

ΰΉƒΰΈ™ΰΈ•ΰΈ±ΰΈ§ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡ΰΈ™ΰΈ΅ΰΉ‰ΰΉƒΰΈŠΰΉ‰ΰΈ£ΰΈΉΰΈ›ΰΉΰΈšΰΈšΰΈΰΈ²ΰΈ£ΰΈ§ΰΈ²ΰΈ‡ Widget แนวตั้ง:

5.2 ΰΈΰΈ²ΰΈ£ΰΈˆΰΈ±ΰΈ”ΰΈΰΈ²ΰΈ£ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈ«ΰΈ₯ΰΈ²ΰΈ’ΰΈšΰΈ£ΰΈ£ΰΈ—ΰΈ±ΰΈ”

5.3 ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ£ΰΈ£ΰΈ°ΰΈ§ΰΈ±ΰΈ‡ΰΉ€ΰΈ£ΰΈ·ΰΉˆΰΈ­ΰΈ‡ Long Text


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

ΰΉΰΈšΰΈšΰΈΰΈΆΰΈΰΈ«ΰΈ±ΰΈ”ΰΈ—ΰΈ΅ΰΉˆ 1: ΰΉ€ΰΈ›ΰΈ₯ΰΈ΅ΰΉˆΰΈ’ΰΈ™ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΉΰΈ₯ΰΈ°ΰΈͺΰΈ΅ (10 ΰΈ™ΰΈ²ΰΈ—ΰΈ΅)

ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒ: แก้ไขโค้ดให้:

  • Main Label แΰΈͺΰΈ”ΰΈ‡ "ΰΈͺΰΈ§ΰΈ±ΰΈͺΰΈ”ΰΈ΅ IoT!"

  • ΰΈͺΰΈ΅ΰΈžΰΈ·ΰΉ‰ΰΈ™ΰΈ«ΰΈ₯ΰΈ±ΰΈ‡ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ΰΈͺΰΈ΅ΰΈ”ΰΈ³ (0x000000)

  • ΰΈͺΰΈ΅ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ Main Label ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ΰΈͺΰΈ΅ΰΉ€ΰΈ‚ΰΈ΅ΰΈ’ΰΈ§ (0x00FF00)


ΰΉΰΈšΰΈšΰΈΰΈΆΰΈΰΈ«ΰΈ±ΰΈ”ΰΈ—ΰΈ΅ΰΉˆ 2: แΰΈͺΰΈ”ΰΈ‡ΰΈ„ΰΉˆΰΈ²ΰΈ•ΰΈ±ΰΈ§ΰΉΰΈ›ΰΈ£ (15 ΰΈ™ΰΈ²ΰΈ—ΰΈ΅)

ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒ: ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ Label แΰΈͺΰΈ”ΰΈ‡ΰΈ„ΰΉˆΰΈ²ΰΈ­ΰΈΈΰΈ“ΰΈ«ΰΈ ΰΈΉΰΈ‘ΰΈ΄ΰΉΰΈ₯ΰΈ°ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈŠΰΈ·ΰΉ‰ΰΈ™:

  • Title: "Sensor Data"

  • Label 1: "Temperature: 25.5 Β°C"

  • Label 2: "Humidity: 60 %"

Hint: ΰΉƒΰΈŠΰΉ‰ lv_label_set_text_fmt() ΰΈͺำหรับ format string


ΰΉΰΈšΰΈšΰΈΰΈΆΰΈΰΈ«ΰΈ±ΰΈ”ΰΈ—ΰΈ΅ΰΉˆ 3: Label ΰΈ«ΰΈ₯ΰΈ²ΰΈ’ΰΈšΰΈ£ΰΈ£ΰΈ—ΰΈ±ΰΈ” (10 ΰΈ™ΰΈ²ΰΈ—ΰΈ΅)

ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒ: ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ Label แΰΈͺΰΈ”ΰΈ‡ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ระบบ 4 ΰΈšΰΈ£ΰΈ£ΰΈ—ΰΈ±ΰΈ”:


7. ΰΈͺΰΈ£ΰΈΈΰΈ›

ΰΈ«ΰΈ±ΰΈ§ΰΈ‚ΰΉ‰ΰΈ­
ΰΈͺΰΈ΄ΰΉˆΰΈ‡ΰΈ—ΰΈ΅ΰΉˆΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ΰΈ£ΰΈΉΰΉ‰

Label Widget

Widget ΰΈžΰΈ·ΰΉ‰ΰΈ™ΰΈΰΈ²ΰΈ™ΰΈͺำหรับแΰΈͺΰΈ”ΰΈ‡ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘

lv_label_set_text()

ΰΈ•ΰΈ±ΰΉ‰ΰΈ‡ΰΈ„ΰΉˆΰΈ²ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ (copy string)

lv_label_set_text_fmt()

Format string ΰΉ€ΰΈ«ΰΈ‘ΰΈ·ΰΈ­ΰΈ™ printf()

Style Functions

ΰΉ€ΰΈ›ΰΈ₯ΰΈ΅ΰΉˆΰΈ’ΰΈ™ΰΈͺΰΈ΅, font, alignment

Alignment

ΰΉƒΰΈŠΰΉ‰ lv_obj_align() ΰΈ§ΰΈ²ΰΈ‡ΰΈ•ΰΈ³ΰΉΰΈ«ΰΈ™ΰΉˆΰΈ‡

Best Practices:

  1. ΰΉƒΰΈŠΰΉ‰ lv_label_set_text_static() ΰΈͺำหรับ constant string (ΰΈ›ΰΈ£ΰΈ°ΰΈ«ΰΈ’ΰΈ±ΰΈ” memory)

  2. ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΈͺΰΈ­ΰΈšΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈ’ΰΈ²ΰΈ§ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ ΰΈ«ΰΈ£ΰΈ·ΰΈ­ΰΉƒΰΈŠΰΉ‰ lv_label_set_long_mode()

  3. ΰΉƒΰΈŠΰΉ‰ΰΈͺΰΈ΅ΰΈ—ΰΈ΅ΰΉˆΰΈ­ΰΉˆΰΈ²ΰΈ™ΰΈ‡ΰΉˆΰΈ²ΰΈ’ (contrast ΰΈͺΰΈΉΰΈ‡)

  4. ΰΈˆΰΈ±ΰΈ” alignment ΰΉƒΰΈ«ΰΉ‰ΰΈͺΰΈ­ΰΈ”ΰΈ„ΰΈ₯ΰΉ‰ΰΈ­ΰΈ‡ΰΈΰΈ±ΰΈš UX ΰΈ—ΰΈ΅ΰΉˆΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£


LVGL v9.2 Reference: https://docs.lvgl.io/9.2/widgets/label.html

Last updated

Was this helpful?