ชมรมโดรน

12. ตารางค่าคงที่ config.hpp

ทุกค่าใน config.hpp พร้อมความหมาย หน่วย และค่าที่ต่างจากคู่มือ

config.hpp คือกล่องรวมตัวเลขของโปรเจกต์ ความสูง เวลา มุม พัลส์เซอร์โว อยู่ที่นี่หมด หลักการคือ แก้ที่เดียว ใช้ทุกที่ ไม่ต้องไล่แก้เลขดิบในทุกภารกิจ เหมือนป้ายราคาหน้าร้านอันเดียว ไม่ต้องไปแก้ราคาทุกกล่อง

กลุ่มค่าคงที่ใน config.hppหกกลุ่ม: ความสูง เวลา จิ้ม เซอร์โว หมุน ฟังก์ชันช่วยความสูง (ซม.)HEIGHT_FLIGHT · TAKEOFFGROUND · DROP · K5 · SHOOTระยะ ↔ เวลาMS_PER_CM_FWD · BACKLEFT · RIGHT · *_FASTจิ้มลูกโป่ง (ซม.)PRE_STOP · POKE_FASTPOKE_SLOW · POKE_RETREATเซอร์โวและยิงS_CLOSE · S_LEFT · S_RIGHTFIRE_HOLD_MS · RESET_HOLD_MSหมุนหัวโดรนYAW_MS_PER_DEG · EXTRAYAW_SETTLE_MS · TRIM_DEGฟังก์ชันช่วยhold_now · ms_roundyaw_block · yaw_soft_stop
ค่าใน config.hpp แบ่งเป็นหกกลุ่ม แต่ละกลุ่มมีตารางด้านล่าง

ยึดโค้ดเสมอ และวัดเอง

ตารางนี้ยกจาก config.hpp ปัจจุบัน คู่มือของชมรมมีเลขบางตัวต่างออกไป (ระบุในคอลัมน์ท้าย) ให้เชื่อไฟล์โค้ด และวัดใหม่ทุกครั้งที่เปลี่ยนโดรน แบต หรือสนาม

ความสูง (ซม.)

ชื่อค่าความหมายคู่มือเขียน
HEIGHT_FLIGHT100ความสูงบินปกติ100
HEIGHT_TAKEOFF110ความสูงตั้งหลังขึ้นบิน120
HEIGHT_GROUND100ความสูงต่ำใกล้พื้น100
HEIGHT_DROP45ระดับที่ปล่อยสัมภาระ50
HEIGHT_K5170ความสูงพิเศษของ KEY5170
HEIGHT_SHOOT120ความสูงยิงเป้า120
Forward_cm275ระยะเดินหน้ามาตรฐานไม่มี

อ่านต่อที่ คุมความสูง

ระยะ ↔ เวลา (ms ต่อ ซม.)

ชื่อค่าทิศคู่มือเขียน
MS_PER_CM_FWD15.46หน้า (ปกติ)16.39
MS_PER_CM_BACK15.16หลัง (ปกติ)16.39
MS_PER_CM_LEFT15.65ซ้าย (ปกติ)15.65
MS_PER_CM_RIGHT15.65ขวา (ปกติ)15.65
MS_PER_CM_FWD_FAST11.89หน้า (เร็ว)11.89
MS_PER_CM_BACK_FAST11.89หลัง (เร็ว)11.89
MS_PER_CM_LEFT_FAST11.89ซ้าย (เร็ว)11.89
MS_PER_CM_RIGHT_FAST11.89ขวา (เร็ว)11.89

ใน config.hpp มีบรรทัด MS_PER_CM_FWD = 16.39f ที่ถูกคอมเมนต์ไว้ เป็นค่าเก่าที่คู่มืออ้างถึง ดู ระยะกับเวลา

จิ้มลูกโป่ง (ซม.)

ชื่อค่าความหมาย
PRE_STOP_CM20หยุดก่อนเป้า (ปกติ)
POKE_FAST_CM14เข้าเร็วช่วงแรก
POKE_SLOW_CM6จิ้มช้าช่วงสอง
POKE_RETREAT_CM14ถอยหลังหลังจิ้ม
PRE_STOP_K620หยุดก่อนเป้า (KEY6)
POKE_FAST_K610เข้าเร็ว (KEY6)
POKE_SLOW_K610จิ้มช้า (KEY6)
POKE_RETREAT_K614ถอย (KEY6)
ALT_GUARD_MIN_CM70ความสูงต่ำสุดที่ยอมให้ลงตอนเข้าใกล้แท่น
PILLAR_MICRO_SHIFT8ขยับเล็กน้อยรอบเสา
PED_ALERT_CM30ระยะเตือนใกล้แท่น
BUMP_UP_CM10ยกขึ้นเล็กน้อยเมื่อชน

ตอนเขียนหน้านี้ไม่พบการเรียกใช้ 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_CLOSE1500µsตำแหน่งกลาง/ปิด
S_LEFT1200µsปัดซ้าย
S_RIGHT2000µsปัดขวา
S_CLOSE_ANGLE88องศาตำแหน่งกลางแบบมุม
S_LEFT_ANGLE62องศาปัดซ้ายแบบมุม
S_RIGHT_ANGLE132องศาปัดขวาแบบมุม
PRE_HOLD_MS60msพักก่อนยิง
FIRE_HOLD_MS220msค้างตำแหน่งยิง
RESET_HOLD_MS150msคืนตำแหน่งกลาง
POST_DELAY_MS60msพักหลังยิง

พินยิงกำหนดไว้ตอนต้นไฟล์: SHOOT1_PIN = PORT4, SHOOT2_PIN = PORT5 ซึ่ง PORT4 คือขา D3 และ PORT5 คือ A1 (นิยามใน protocol.hpp) ดู servo-calibration

หมุนหัวโดรน

ชื่อค่าหน่วยความหมาย
YAW_MS_PER_DEG42ms/องศาเวลารอต่อ 1 องศา
YAW_EXTRA_MS120msเผื่อโมเมนตัม
YAW_SETTLE_MS220msรอนิ่งหลังหมุน
YAW_TRIM_DEG4องศาหมุนย้อนลด 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)

ชื่อพินจริง
PORT1D10
PORT2D9
PORT3D11
PORT4D3
PORT5A1
PORT6A0

วิธีแก้ค่าอย่างปลอดภัย

  1. จดค่าเดิมไว้ หรือคอมเมนต์บรรทัดเดิมทิ้งไว้ใต้บรรทัดใหม่ (ชมรมทำแบบนี้กับ 16.39f)
  2. เปลี่ยนทีละค่า
  3. อัปโหลด ทดสอบคำสั่งสั้นๆ ก่อน เช่น drone.fw(100)
  4. จดผลลงตาราง

ลองทำ

  1. หาค่า YAW_SETTLE_MS ใน config.hpp แล้วคำนวณเวลานิ่งหลังจังหวะแรกของ yaw_soft_stop (ตอบ: 220 ms)
  2. หาว่า HEIGHT_GROUND กับ HEIGHT_FLIGHT ใช้ในภารกิจไหนบ้าง (ใช้ค้นหาข้อความในโฟลเดอร์)
  3. ลองเปลี่ยน POKE_FAST_CM แล้วสังเกตว่ามีไฟล์ไหนบ้างที่ได้รับผล

พังตรงไหนบ่อย

  • แก้ตัวเลขดิบในภารกิจแทนที่จะแก้ config ค่าเดียวกันกระจายหลายที่ สุดท้ายไม่ตรงกัน
  • ลืมต่อท้าย f ในค่าทศนิยม 15.46 เป็น double ส่วน 15.46f เป็น float โค้ดเดิมใช้ f ตลอด
  • เปลี่ยนเลขแต่ลืมอัปโหลดใหม่ โดรนยังใช้ค่าเดิม
  • เชื่อคู่มือมากกว่าไฟล์จริง ดูคอลัมน์ "คู่มือเขียน" ในตาราง

On this page