Scale Gauge

Lab 10: Real Scale Gauge (Pitch Angle)

1. โครงสร้างภาพรวมของ Lab

Why? - ทำไมต้องเรียนรู้เรื่องนี้

  • Scale Gauge: การใช้ Scale widget กับ needle line

  • Pitch Measurement: วัดการเอียงหน้า/หลัง (Forward/Backward)

  • Visual Needle: เข็มชี้ตำแหน่งค่าปัจจุบัน

What? - จะได้เรียนรู้อะไร

  1. Scale Widget: สร้าง round gauge พร้อม tick marks

  2. Needle Line: ใช้ lv_scale_set_line_needle_value()

  3. Section Styling: แบ่งโซนสีต่างๆบน scale

  4. Pitch Angle: การคำนวณ pitch จาก accelerometer

How? - จะทำอย่างไร

  1. Initialize Tilt Analysis ด้วย aic_tilt_init()

  2. สร้าง Scale gauge พร้อม sections และ needle

  3. Timer callback อัพเดท needle position จาก pitch angle


2. หลักการทำงานและ Flowchart

2.1 Pitch Angle Measurement

2.2 Scale Widget Structure

2.3 UI Layout


3. ฟังก์ชันสำคัญ

3.1 Scale Functions

Function
Description

lv_scale_create(parent)

สร้าง scale widget

lv_scale_set_mode(scale, LV_SCALE_MODE_ROUND_OUTER)

โหมด gauge กลม

lv_scale_set_range(scale, min, max)

กำหนด value range

lv_scale_set_total_tick_count(scale, count)

จำนวน tick ทั้งหมด

lv_scale_set_major_tick_every(scale, n)

tick ใหญ่ทุก n อัน

lv_scale_add_section(scale)

เพิ่ม colored section

3.2 Needle Functions

Function
Description

lv_line_create(scale)

สร้าง line ใน scale

lv_scale_set_line_needle_value(scale, needle, len, val)

ตั้งค่า needle

3.3 Pitch API

Function
Description

aic_tilt_get_pitch()

Get pitch (-90° to +90°)

aic_tilt_get_pitch_percent()

Get pitch as 0-100%


4. Code Example

4.1 Timer Callback

4.2 Create Scale with Sections

4.3 Create Needle

4.4 Main Function


5. องค์ความรู้และเทคนิค

5.1 Scale Modes

5.2 Needle Length Calculation

5.3 Section Styling


6. แบบฝึกหัด

Exercise 1: Triple Zone Scale

สร้าง Scale 3 zones:

  • Green: 0-33% (Safe)

  • Yellow: 34-66% (Caution)

  • Red: 67-100% (Danger)

Exercise 2: Needle Color Change

เปลี่ยนสี needle ตามค่า:

  • Blue: Normal zone

  • Red: High alert zone


7. References


Previous Lab: Lab 9: Real Arc Gauge Next Lab: Lab 11: Real Chart Dashboard

Last updated

Was this helpful?