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

ทำไมต้องใช้ 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]→ ตั้งชื่อ Environmentextends→ เอาค่าจากenv:esp32devมาสืบต่อbuild_src_filter→ เลือกไฟล์สำหรับ buildupload_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)
- แถบเครื่องมือ PlatformIO ทางด้านล่าง
ภาพตัวอย่าง:

- คลิก Switch PlatformIO Project Environment
ภาพตัวอย่าง:

- เมื่อคลิกแล้วจะแสดง env ทั้งหมด สามารถคลิกเลือก Environment ที่ต้องการ (เช่น
main,test1) ดังภาพตัวอย่าง
- กด Build (✔️) หรือ Upload (➡️) ตามปกติ
ข้อดีของ Multiple Environment
- สลับไฟล์ main.cpp ได้ทันที
- ลดความผิดพลาดจากการแก้ไฟล์
- ทำงานได้เร็วขึ้น
- ใช้โปรเจคเดียวแทนหลาย ๆ โปรเจค
- เหมาะกับงานทดลอง, sensor test, control logic test
สรุป
การตั้งค่า PlatformIO แบบหลาย Environment ช่วยให้การจัดการโค้ดหลายชุดในโปรเจคเดียวเป็นเรื่องง่าย โดยใช้ build_src_filter เพื่อกำหนดไฟล์ที่จะถูก compile แบบเฉพาะเจาะจง
ไม่ต้องสร้างโปรเจคใหม่
ไม่ต้อง undo โค้ดไปมา
เลือก Environment → Build → Flash ได้ทันที
ที่สำคัญ Workflow นี้ช่วยให้งานรวดเร็วและมีประสิทธิภาพในการพัฒนามากขึ้น
หากบทความนี้มีประโยชน์ สามารถกดดาวด้านบนบทความเพื่อเป็นกำลังใจให้ผมได้นะครับ