2016-07-24 8 views
0

ステッパーモーターは、Ardiunoに接続されたL293dドライバーを使用して制御されます。私の情報を入手したチュートリアルはここにあります。https://learn.adafruit.com/wifi-control ... ino-sketchですが、DCモータの代わりにステッピングモータに合うようにコードを変更しました。現在のところ、私はシリアル入力でテストしているだけで、ワイヤレスはまだありません。ArdiunoとNode.jsを使用したステッパーモーターの制御

私はすべての機能があります。フォワードボタンを押すとモーターが前進します。ただし、1回転だけ回転します。フォワードボタンをクリックすると、停止ボタンを押すまで、フォワードボタンをクリックすると、フォワードボタンをクリックすると、フォワードボタンをクリックすると、フォワードボタンがクリックされると、誰もこれを行う方法を知っていますか?

#include <SPI.h> 
#include <aREST.h> 
#include <Stepper.h> 
#include <Wire.h> 

aREST rest = aREST(); 

int inA1 = 12; // input 1 of the stepper 
int inA2 = 11; // input 2 of the stepper 
int inB1 = 10; // input 3 of the stepper 
int inB2 = 9; // input 4 of the stepper 


#define STEPS 512 

Stepper motor(STEPS, inA1, inA2, inB1, inB2); 

void setup() {     
    pinMode(inA1, OUTPUT);  
    pinMode(inA2, OUTPUT);  
    pinMode(inB1, OUTPUT);  
    pinMode(inB2, OUTPUT);  

Serial.begin(115200);  
Serial.println(F("Hello, CC3000!\n")); 

rest.set_id("1"); 
rest.set_name("robot"); 

    //Expose functions 
rest.function("forward",forward); 
rest.function("backward",backward); 
rest.function("stop",stop); 
} 


void loop() 
{ 

    rest.handle(Serial); 

} 

// Forward 
int forward(String command) { 
    motor.setSpeed(10); 
    motor.step(100); 
    return 1; 
} 

//Backforward 
int backward(String command) { 
    motor.setSpeed(-10); 
    motor.step(100); 
    return 1; 
} 

答えて

0

失敗:シンプルセットmotor.step(2147483647)。 2147483647はintの最大値です。


新しい試み:次のロジックを実装してみてください。私たちは前後+ +戻しボタンを押すとSerial 3のコマンドに送る場合、モータは一貫し、それらのすべてを実行

int lastCommand = 0; // 0 - nothing; 1 - forward; 2 - backward; 3 - stop; 
void forward() { 
    lastCommand = 1; 
    ... 
} 

void backward() { 
    lastCommand = 2; 
    ... 
} 

void stop() { 
    lastCommand = 0; 
    ... 
} 

void loop() { 
    rest.handle(Serial); 
    if (lastCommand == 1) 
     forward(); 
    if (lastCommand == 2) 
     backward(); 
} 

ので、汚れたコードの下にC-教祖ではありませんよ。 Imhoそれは問題です。

+0

私はintの最大値に変更します。それでも依然として連続的な回転の結果は生じなかった。 –

+0

おそらく、int内ではなく、ライブラリ内で使用されています。 50000のような値を試してみてください。問題のある場所はモーターで、ビジー状態では別のコマンドを実行しません。 –

+0

私はこれが問題を解決するとは思わない。しばらくの間、大きな価値を置くことはできますが、それはまだ止まります。私は無限の時間停止することなく走り続けるためにモーターが必要です。スクリプトを実行し続けるために関数を呼び出す方法はありますか? –

関連する問題