2016-05-21 5 views
0

私はArduinoでステッパーモーターを使用しています。時計回りに回すと、ワイヤーの電圧を1つずつ変える機能を作っています。 これは機能しますが、私は関数をループに入れても機能しません。Arduinoステッパーモーターループ奇妙な振る舞い

コードは次のとおりです。コードはモーターの吃音を作る

void setup() { 
    pinMode(13, OUTPUT); 
    pinMode(12, OUTPUT); 
    pinMode(11, OUTPUT); 
    pinMode(10, OUTPUT); 
} 

void turnRight(int delayTime) { 
    for(int i; i<=4; i++){ 
    digitalWrite(9+i, LOW); 
    digitalWrite(10+i, HIGH); 
    delay(delayTime); 
    } 
} 

void turnLeft(int delayTime) { 
    for(int i; i<=4; i++){ 
    digitalWrite(14-i, LOW); 
    digitalWrite(13-i, HIGH); 
    delay(delayTime); 
    }  
} 

void loop() { 

    int p=0; 
    while(p<=100){ 
    turnRight(25); 
    p++; 

    } 

} 

、それはワイヤーを意味し、振動運動の種類に左右非常に迅速に行く、おそらく間違った順序でオンになっています。私はこのコードを実行するときしかし:それは作業を行い

void setup() { 
    pinMode(13, OUTPUT); 
    pinMode(12, OUTPUT); 
    pinMode(11, OUTPUT); 
    pinMode(10, OUTPUT); 
} 

void turnRight(int delayTime) { 
    for(int i; i<=4; i++){ 
    digitalWrite(9+i, LOW); 
    digitalWrite(10+i, HIGH); 
    delay(delayTime); 
    } 
} 

void turnLeft(int delayTime) { 
    for(int i; i<=4; i++){ 
    digitalWrite(14-i, LOW); 
    digitalWrite(13-i, HIGH); 
    delay(delayTime); 
    }  
} 

void loop() { 

    int p=0; 
    while(p<=100){ 
    turnRight(25); 

    } 

} 

を、モータをスムーズに実行され、それは吃音しない、唯一の違いは、私はこのコードでのpをインクリメントしていないということです。 forループを使用すると同じ効果が得られます。forループの値を増やすと、モーターが吃音になります。

+0

関数 '' turnRight''と '' turnLeft''では、forループは '' int i = 0''のような特定の値で初期化されていません。私はこの部分を得ていませんでした。 –

+0

うわー、あなたの権利と私はちょうど "= 1"の部分を追加し、何とか問題を解決しました。あなたがあなたの答えを掲示することができればそれを受け入れるでしょう。 – SjoerdvdBelt

答えて

2

ファンクションturnRightturnLeftでは、forループはint i=0のような特定の値で初期化されていません。これは問題の原因と思われます。