首先看看MotorTachoCount定義:
long MotorTachoCount | ( | byte | output | ) |
Get the tachometer count value of the specified output.
再看看MotorRatationCount定義:
long MotorRotationCount | ( | byte | output | ) |
Get the program-relative position counter value of the specified output
都是取讀馬達目前位置的累計角度值這也是常被搞混的地方,但這一定有差異因為相同的Function何必寫兩次呢,其中最大的差異在
- MotorTachoCount有方向性當馬達轉動角度一改變方向時「就會歸零」而重新累計角度值,例如當順時針轉動馬達讀取MotorTachoCount(OUT_A)的Value=500時再反向轉動30度,這時讀取MotorTachoCount(OUT_A)的Value會變成-30。
- MotorRotationCount也有方向性但當馬達轉動角度一改變方向時「不會歸零」而是減去角度值,例如當順時針轉動馬達讀取 MotorTachoCount(OUT_A)的Value=500時再反向轉動30度,這時讀取MotorTachoCount(OUT_A)的 Value會變成470。
所以兩者的差異是我們在使用Function時要瞭解的地方。
以上的測試是用NXT傳送正負Power值或是正負角度值給RotateMotor函數使用時得到的結果。
如果你用手轉動驅動馬達順時針或逆時針時的結果會不一樣,因為這兩個函數讀取的角度值都相同而且是累計值加減,不會像MotorTachoCount一遇到反向就規零重新累計數值。
沒有留言:
張貼留言