พื้นฐาน Embedded C - ตอนที่ 2

ทำไมต้องเรียน Struct, Array, Pointer?

Struct, Array, และ Pointer คือหัวใจของ Embedded IoT Programming:

  1. Sensor Data Management: จัดเก็บข้อมูล multi-axis sensors (IMU: 6-axis, 9-axis)

  2. Efficient Communication: ส่งข้อมูลหลายค่าพร้อมกัน (I2C, SPI, UART)

  3. Memory Efficiency: Pass by pointer ประหยัด RAM และ CPU time

  4. Buffering: Circular buffers สำหรับ ADC, audio streaming

  5. Hardware Abstraction: Struct-based driver architecture

Real Applications:

  • Wearable: เก็บข้อมูล heart rate, steps, calories ใน array

  • Motion Detection: IMU data (accel + gyro) organized ใน struct

  • Environmental Monitoring: Temperature, humidity, pressure arrays

  • Edge AI: Input features เป็น float arrays ส่งเข้า ML model

┌─────────────────────────────────────────────────────────────────┐
│                 Sensor Data Processing Flow                     │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   Sensor    →   Raw Data   →   Process    →   Result            │
│   (BMI270)      (bytes)        (compute)      (decision)        │
│                                                                 │
│   ต้องใช้:                                                        │
│   - Structs: จัดกลุ่มข้อมูล X, Y, Z                                  │
│   - Pointers: ส่งข้อมูลไปฟังก์ชันอย่างมีประสิทธิภาพ                       │
│   - Arrays: เก็บ buffer สำหรับ filtering                          │
│   - Algorithms: magnitude, moving average, thresholding         │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

1. Arrays (อาร์เรย์)

1.1 การประกาศและใช้งาน Array

1.2 Multi-dimensional Arrays

1.3 Array ใช้กับ Sensor Data


2. Structures (โครงสร้าง)

ทำไมต้องใช้ Struct?

ข้อดี:

  1. Logical Grouping: จัดกลุ่มข้อมูลที่เกี่ยวข้องกัน (X,Y,Z axes)

  2. Easy to Pass: ส่งหลายค่าพร้อมกันในฟังก์ชันเดียว

  3. Self-documenting: ชื่อ member บอกความหมายชัดเจน

  4. Memory Layout Control: สามารถ pack เพื่อส่งผ่าน communication

  5. Driver Architecture: มาตรฐานใน embedded drivers

2.1 การประกาศ Struct

2.2 Nested Structs (Struct ซ้อน Struct)

2.3 Struct Initialization

2.4 ขนาดของ Struct และ Padding

2.5 Packed Structs (for communication)


3. Pointers (พอยน์เตอร์)

3.1 พื้นฐาน Pointer

3.2 Pointer และ Array

3.3 ทำไม Embedded ใช้ Pointer เยอะ?

3.4 Pointer to Struct

3.5 Passing Struct to Function

3.6 Function Pointer (Callback)

4. Arrays และ Buffers

4.1 Array Basics

4.2 Array และ Pointer ความสัมพันธ์

4.3 Circular Buffer

Last updated

Was this helpful?