YuTTYL Blog

platformIO สร้างหลาย main ในโปรเจคเดียว

เขียนโดย YuTTYL เมื่อวันที่ 16/11/2025 | 3 นาทีในการอ่าน
0

เมื่อเราต้องทดสอบโค้ดหลายเวอร์ชัน หลายฟีเจอร์ หรือมีหลายไฟล์ main.cpp อยู่ในโปรเจคเดียว หนึ่งในปัญหาที่พบบ่อยคือไม่อยากสร้างโปรเจคใหม่ หรือแก้ main แล้วต้อง undo กลับไปมา PlatformIO มีฟีเจอร์ Multiple Environments ที่ช่วยให้เราเลือกไฟล์ที่จะ build ได้ทันที ด้วยคำสั่ง build_src_filter นั่นเอง

PlatformIO Multiple Environment Cover

ทำไมต้องใช้ Multiple Environments ใน PlatformIO

PlatformIO จะ build ไฟล์ทั้งหมดใน src/ ทำให้การสลับไฟล์หลัก (main) เป็นงานที่ยุ่งยาก และเสี่ยงต่อการแก้ผิดไฟล์

ด้วย Multiple Environments คุณสามารถ:

  • เลือก main.cpp แต่ละไฟล์ได้แบบอิสระ
  • แยกโค้ดทดสอบ/ฟีเจอร์ย่อยออกจากกัน
  • ไม่ต้องสร้างโปรเจคใหม่หลายอัน
  • ทำงานง่ายขึ้นมากโดยไม่ต้อง undo โค้ดไปมา

ตัวอย่าง platformio.ini พื้นฐาน

เมื่อเริ่มโปรเจคใหม่ใน PlatformIO จะได้ Environment ตั้งต้นดังนี้:

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino

การสร้าง Environment ใหม่ + เลือก main.cpp ด้วย build_src_filter

เราสามารถสร้าง Environment ใหม่เพื่อกำหนดไฟล์ที่จะ build เช่นไฟล์ main.cpp ดังนี้:

[env:main]
extends = env:esp32dev
build_src_filter = +<main.cpp>
upload_port = COM7
monitor_port = COM7

อธิบาย:

  • [env:main] → ตั้งชื่อ Environment
  • extends → เอาค่าจาก env:esp32dev มาสืบต่อ
  • build_src_filter → เลือกไฟล์สำหรับ build
  • upload_port / monitor_port → ตั้งค่า COM ให้ตรงกับบอร์ด

ตัวอย่างหลาย Environment: main.cpp และ test1.cpp

นี่คือตัวอย่าง environment แบบแยกไฟล์ชัดเจน:

[platformio]
default_envs = main

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino

[env:main]
extends = env:esp32dev
build_src_filter = +<main.cpp>
upload_port = COM7
monitor_port = COM7

[env:test1]
extends = env:esp32dev
build_src_filter = +<test1.cpp>
upload_port = COM6
monitor_port = COM6

การเลือก Environment ใน VSCode (PlatformIO)

  1. แถบเครื่องมือ PlatformIO ทางด้านล่าง ภาพตัวอย่าง: default env
  2. คลิก Switch PlatformIO Project Environment ภาพตัวอย่าง: click env
  3. เมื่อคลิกแล้วจะแสดง env ทั้งหมด สามารถคลิกเลือก Environment ที่ต้องการ (เช่น main, test1) ดังภาพตัวอย่าง select env
  4. กด Build (✔️) หรือ Upload (➡️) ตามปกติ

ข้อดีของ Multiple Environment

  • สลับไฟล์ main.cpp ได้ทันที
  • ลดความผิดพลาดจากการแก้ไฟล์
  • ทำงานได้เร็วขึ้น
  • ใช้โปรเจคเดียวแทนหลาย ๆ โปรเจค
  • เหมาะกับงานทดลอง, sensor test, control logic test

สรุป

การตั้งค่า PlatformIO แบบหลาย Environment ช่วยให้การจัดการโค้ดหลายชุดในโปรเจคเดียวเป็นเรื่องง่าย โดยใช้ build_src_filter เพื่อกำหนดไฟล์ที่จะถูก compile แบบเฉพาะเจาะจง

ไม่ต้องสร้างโปรเจคใหม่ ไม่ต้อง undo โค้ดไปมา เลือก Environment → Build → Flash ได้ทันที
ที่สำคัญ Workflow นี้ช่วยให้งานรวดเร็วและมีประสิทธิภาพในการพัฒนามากขึ้น

หากบทความนี้มีประโยชน์ สามารถกดดาวด้านบนบทความเพื่อเป็นกำลังใจให้ผมได้นะครับ