|
|

楼主 |
发表于 2014-3-6 23:38:45
|
显示全部楼层
本帖最后由 Super169 于 2014-3-6 23:40 编辑
非常感謝你的資料, 不來可以自行修改 stepper.cpp.
當我嘗試修改後, 發現更奇怪的時, 原來要電機轉動, 只需兩拍....
我把 stepper.cpp 改成只有兩拍:
stepMotor(this->step_number % 2);
順時針時, 只需兩個設定:
case 0: // 0110
digitalWrite(motor_pin_1, LOW);
digitalWrite(motor_pin_2, HIGH);
digitalWrite(motor_pin_3, HIGH);
digitalWrite(motor_pin_4, LOW);
break;
case 1: // 1001
digitalWrite(motor_pin_1, HIGH);
digitalWrite(motor_pin_2, LOW);
digitalWrite(motor_pin_3, LOW);
digitalWrite(motor_pin_4, HIGH);
break;
要逆時針時, 只需改變設定為:
case 0: // 1010
digitalWrite(motor_pin_1, HIGH);
digitalWrite(motor_pin_2, HIGH);
digitalWrite(motor_pin_3, LOW);
digitalWrite(motor_pin_4, LOW);
break;
case 1: // 0110
digitalWrite(motor_pin_1, LOW);
digitalWrite(motor_pin_2, LOW);
digitalWrite(motor_pin_3, HIGH);
digitalWrite(motor_pin_4, HIGH);
break;
(雖然整體是逆向, 有點不順暢, 當中有時會突意正向走半步再改回逆向)
但就有問題了, 正向跟反向不是倒過來就可以, 因此輸入 負數的步數時, 自然不可能改變方向了.
不知是那裡出了問題, 還在推測 pin_1, pin_2, pin_3, pin_4 跟電機內的設定會是什麼關係, 為向只有兩拍就可以轉動? 而正向跟反向亦不是反過來輸入 (steppper.cpp 原意是把 0,1,2,3 的輸出反轉次序就是逆向的) . 真的想不通.
要再嘗試作不同的輸出, 看看是否可以找出當中原理.
|
|