12. ตารางค่าคงที่ config.hpp
ทุกค่าใน config.hpp พร้อมความหมาย หน่วย และค่าที่ต่างจากคู่มือ
config.hpp คือกล่องรวมตัวเลขของโปรเจกต์ ความสูง เวลา มุม พัลส์เซอร์โว อยู่ที่นี่หมด หลักการคือ แก้ที่เดียว ใช้ทุกที่ ไม่ต้องไล่แก้เลขดิบในทุกภารกิจ เหมือนป้ายราคาหน้าร้านอันเดียว ไม่ต้องไปแก้ราคาทุกกล่อง
ยึดโค้ดเสมอ และวัดเอง
ตารางนี้ยกจาก config.hpp ปัจจุบัน คู่มือของชมรมมีเลขบางตัวต่างออกไป (ระบุในคอลัมน์ท้าย) ให้เชื่อไฟล์โค้ด และวัดใหม่ทุกครั้งที่เปลี่ยนโดรน แบต หรือสนาม
ความสูง (ซม.)
| ชื่อ | ค่า | ความหมาย | คู่มือเขียน |
|---|---|---|---|
HEIGHT_FLIGHT | 100 | ความสูงบินปกติ | 100 |
HEIGHT_TAKEOFF | 110 | ความสูงตั้งหลังขึ้นบิน | 120 |
HEIGHT_GROUND | 100 | ความสูงต่ำใกล้พื้น | 100 |
HEIGHT_DROP | 45 | ระดับที่ปล่อยสัมภาระ | 50 |
HEIGHT_K5 | 170 | ความสูงพิเศษของ KEY5 | 170 |
HEIGHT_SHOOT | 120 | ความสูงยิงเป้า | 120 |
Forward_cm | 275 | ระยะเดินหน้ามาตรฐาน | ไม่มี |
อ่านต่อที่ คุมความสูง
ระยะ ↔ เวลา (ms ต่อ ซม.)
| ชื่อ | ค่า | ทิศ | คู่มือเขียน |
|---|---|---|---|
MS_PER_CM_FWD | 15.46 | หน้า (ปกติ) | 16.39 |
MS_PER_CM_BACK | 15.16 | หลัง (ปกติ) | 16.39 |
MS_PER_CM_LEFT | 15.65 | ซ้าย (ปกติ) | 15.65 |
MS_PER_CM_RIGHT | 15.65 | ขวา (ปกติ) | 15.65 |
MS_PER_CM_FWD_FAST | 11.89 | หน้า (เร็ว) | 11.89 |
MS_PER_CM_BACK_FAST | 11.89 | หลัง (เร็ว) | 11.89 |
MS_PER_CM_LEFT_FAST | 11.89 | ซ้าย (เร็ว) | 11.89 |
MS_PER_CM_RIGHT_FAST | 11.89 | ขวา (เร็ว) | 11.89 |
ใน config.hpp มีบรรทัด MS_PER_CM_FWD = 16.39f ที่ถูกคอมเมนต์ไว้ เป็นค่าเก่าที่คู่มืออ้างถึง ดู ระยะกับเวลา
จิ้มลูกโป่ง (ซม.)
| ชื่อ | ค่า | ความหมาย |
|---|---|---|
PRE_STOP_CM | 20 | หยุดก่อนเป้า (ปกติ) |
POKE_FAST_CM | 14 | เข้าเร็วช่วงแรก |
POKE_SLOW_CM | 6 | จิ้มช้าช่วงสอง |
POKE_RETREAT_CM | 14 | ถอยหลังหลังจิ้ม |
PRE_STOP_K6 | 20 | หยุดก่อนเป้า (KEY6) |
POKE_FAST_K6 | 10 | เข้าเร็ว (KEY6) |
POKE_SLOW_K6 | 10 | จิ้มช้า (KEY6) |
POKE_RETREAT_K6 | 14 | ถอย (KEY6) |
ALT_GUARD_MIN_CM | 70 | ความสูงต่ำสุดที่ยอมให้ลงตอนเข้าใกล้แท่น |
PILLAR_MICRO_SHIFT | 8 | ขยับเล็กน้อยรอบเสา |
PED_ALERT_CM | 30 | ระยะเตือนใกล้แท่น |
BUMP_UP_CM | 10 | ยกขึ้นเล็กน้อยเมื่อชน |
ตอนเขียนหน้านี้ไม่พบการเรียกใช้ PILLAR_MICRO_SHIFT, PED_ALERT_CM, BUMP_UP_CM, Forward_cm, HEIGHT_K5 และ PRE_HOLD_MS ในไฟล์ .ino และ .cpp ความหมายของ PILLAR_MICRO_SHIFT, PED_ALERT_CM, BUMP_UP_CM และ PRE_HOLD_MS ในตารางเดาจากชื่อ ยืนยันกับผู้เขียนโค้ดก่อนใช้ ดู เจาะลูกโป่ง
เซอร์โวและยิง
ค่าพัลส์ (µs) ส่งตรงให้เซอร์โว ค่ามุม (องศา) ใช้กับฟังก์ชันที่แปลงมุมเป็นพัลส์
| ชื่อ | ค่า | หน่วย | ความหมาย |
|---|---|---|---|
S_CLOSE | 1500 | µs | ตำแหน่งกลาง/ปิด |
S_LEFT | 1200 | µs | ปัดซ้าย |
S_RIGHT | 2000 | µs | ปัดขวา |
S_CLOSE_ANGLE | 88 | องศา | ตำแหน่งกลางแบบมุม |
S_LEFT_ANGLE | 62 | องศา | ปัดซ้ายแบบมุม |
S_RIGHT_ANGLE | 132 | องศา | ปัดขวาแบบมุม |
PRE_HOLD_MS | 60 | ms | พักก่อนยิง |
FIRE_HOLD_MS | 220 | ms | ค้างตำแหน่งยิง |
RESET_HOLD_MS | 150 | ms | คืนตำแหน่งกลาง |
POST_DELAY_MS | 60 | ms | พักหลังยิง |
พินยิงกำหนดไว้ตอนต้นไฟล์: SHOOT1_PIN = PORT4, SHOOT2_PIN = PORT5 ซึ่ง PORT4 คือขา D3 และ PORT5 คือ A1 (นิยามใน protocol.hpp) ดู servo-calibration
หมุนหัวโดรน
| ชื่อ | ค่า | หน่วย | ความหมาย |
|---|---|---|---|
YAW_MS_PER_DEG | 42 | ms/องศา | เวลารอต่อ 1 องศา |
YAW_EXTRA_MS | 120 | ms | เผื่อโมเมนตัม |
YAW_SETTLE_MS | 220 | ms | รอนิ่งหลังหมุน |
YAW_TRIM_DEG | 4 | องศา | หมุนย้อนลด overshoot |
ดู หมุนหัวโดรน
ฟังก์ชันช่วยใน config.hpp
| ชื่อ | ทำอะไร |
|---|---|
hold_now(ms = 250) | set_direction(7, 2) แล้วรอ ms |
ms_round(x) | ปัด float เป็นเลขจำนวนเต็ม unsigned long (บวก 0.5) |
yaw_block(dir, deg) | set_yaw แล้วรอ deg × 42 + 120 ms |
yaw_soft_stop(to_right, deg, trim) | หมุนสองจังหวะ 70/30 แล้ว trim |
smart_yaw(angle_deg) | เลือกทิศจากเครื่องหมายของมุม |
พินที่เกี่ยวข้อง (protocol.hpp)
| ชื่อ | พินจริง |
|---|---|
PORT1 | D10 |
PORT2 | D9 |
PORT3 | D11 |
PORT4 | D3 |
PORT5 | A1 |
PORT6 | A0 |
วิธีแก้ค่าอย่างปลอดภัย
- จดค่าเดิมไว้ หรือคอมเมนต์บรรทัดเดิมทิ้งไว้ใต้บรรทัดใหม่ (ชมรมทำแบบนี้กับ
16.39f) - เปลี่ยนทีละค่า
- อัปโหลด ทดสอบคำสั่งสั้นๆ ก่อน เช่น
drone.fw(100) - จดผลลงตาราง
ลองทำ
- หาค่า
YAW_SETTLE_MSในconfig.hppแล้วคำนวณเวลานิ่งหลังจังหวะแรกของyaw_soft_stop(ตอบ: 220 ms) - หาว่า
HEIGHT_GROUNDกับHEIGHT_FLIGHTใช้ในภารกิจไหนบ้าง (ใช้ค้นหาข้อความในโฟลเดอร์) - ลองเปลี่ยน
POKE_FAST_CMแล้วสังเกตว่ามีไฟล์ไหนบ้างที่ได้รับผล
พังตรงไหนบ่อย
- แก้ตัวเลขดิบในภารกิจแทนที่จะแก้ config ค่าเดียวกันกระจายหลายที่ สุดท้ายไม่ตรงกัน
- ลืมต่อท้าย
fในค่าทศนิยม15.46เป็น double ส่วน15.46fเป็น float โค้ดเดิมใช้fตลอด - เปลี่ยนเลขแต่ลืมอัปโหลดใหม่ โดรนยังใช้ค่าเดิม
- เชื่อคู่มือมากกว่าไฟล์จริง ดูคอลัมน์ "คู่มือเขียน" ในตาราง