---
# System prepended metadata

title: IR校正功能開發筆記 (FINISH)
tags: [note, stm32_dev]

---

# IR校正功能開發筆記 (FINISH)

###### tags: `note` `stm32_dev`

### IR Sensor校正流程說明：
#### 遙控器端：
1. 按下"joystick + 模式切換按鍵" 3秒，送出紅外線校正命令。
#### 機器魚端：

1.收到紅外線校正命令後，進入校正模式。魚眼LED白光閃爍。

2.在校正模式中，推動Joysticks (前/左/右) 三個方向，就會執行指定方向校正。

3.每個方向的IR資料收集時間為1秒(過程中魚眼LED狀態為紅光恆亮)，完成時綠光快速閃爍3下。

4.再次收到紅外線校正命令後，退出校正模式。

NOTE1.發現EEPROM的LIB有BUG，指定位址寫入或讀取會影響其他位置資料。因此自己開API每次讀取都讀全部資料，寫入則是改完指定資料後再將全部資料寫入。

### TODO LIST:

- [x]  IR data寫入 eeprom
    - [x]  自行開API閃過library缺陷
- [x]  開發校正模式功能
    - [x]  新增UI按鈕指令
        - [x]  機器魚端：新增"C” || “c”命令，觸發校正模式。
        - [x]  遙控器端：長按"joystick + 模式切換按鍵" 3秒，送出字元"C”。
    - [x]  Finite State Machine
        - [x]  新增狀態機管理機器魚運作模式
        - [x]  ui_remote_handler根據opmode決定對應動作(校正模式→指定方向IR校正)
        - [x]  ui_led_handler根據opmode決定對應模式的led閃爍邏輯
- [x]  測試
    - [x]  能正常進出校正模式
    - [x]  進入校正模式後能觸發各IR校正程序
    - [x]  重新開機後，IR維持前次校正閥值
    - [x]  退出校正模式後，機器魚所有功能運作正常。
        - [x]  手動模式測試
            - [x]  前左右控制
            - [x]  重心控制
            - [x]  電量燈號顯示
        - [x]  自動模式測試
            - [x]  各方向IR皆能觸發避障
- [x]  軟體統整：
    - [x]  merge回function-integrate  branch