「Arduinoの基礎 - ステッピングモータ」の版間の差分

ナビゲーションに移動 検索に移動
267行目: 267行目:
  }
  }
</source>
</source>
<br>
==== サンプルコード : ArduinoのA4988ライブラリ(StepperDriverライブラリ)の使用 ====
上記のセクションでは、ステップのパルス信号を作るところからソースコードを記述している。<br>
しかし、ステッピングモータの動作を抽象化して(例えば、60度回転など)、ハイレベルな指示をできる方が扱いやすい。<br>
<br>
そのため、このセクションでは、<u>StepperDriverライブラリ</u>を使用する。<br>
<br>
まず、StepperDriverライブラリをインストールする必要がある。<br>
[Sketch]メニュー - [Include Library] - [Manage Library...]を選択して、表示されたライブラリマネージャから"a4988"と検索して、<br>
StepperDriverライブラリをインストールする。<br>
StepperDriverライブラリをインストール後、[Sketch]メニュー - [Include Library] - [StepperDriver]を選択する。<br>
<br>
StepperDriverライブラリを使用したサンプルコードを以下に記述する。<br>
モータの回転は、<code>rotate()</code>関数に回転角度を度数で渡すことで行う。<br>
また、回転の速さは、<code>setRPM()</code>関数で設定できる。<br>
<source lang="c++">
#include <A4988.h>
const int MOTOR_STEPS = 200;
const int DIR  =  8;
const int STEP =  9;
float rpm      = 10;
int microsteps = 30;
A4988 stepper(MOTOR_STEPS, DIR, STEP);
void setup()
{
    stepper.begin(rpm, microsteps);
}
void loop()
{
    stepper.rotate(360);
    delay(1000);
    stepper.rotate(-360);
    delay(1000);
}
</source>
<br>
以下のサンプルコードでは、ステッピングモータがどのような設定で動作しているかを、LCDに表示している。<br>
LCDの使用については、Arduinoを用いてLCDディスプレイに文字を表示するや1602A I2Cアダプターの利用を参照すること。<br>
<source lang="c++">
#include <LiquidCrystal_I2C.h>
#include <A4988.h>
const int MOTOR_STEPS = 200;
const int DIR  =  8;
const int STEP =  9;
float rpm      = 10;
int microsteps =  1;
A4988 stepper(MOTOR_STEPS, DIR, STEP);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
    // LCD
    lcd.init();
    lcd.backlight();
    lcd.print("");
    // ステッピングモータ
    stepper.begin(rpm, microsteps);
}
void loop()
{
    // RPM
    rpm = rpm == 20 ? 10 : 20;
    stepper.setRPM(rpm);
    printStatus(90); 
    stepper.rotate(90);
    delay(1000);
    printStatus(-180);
    stepper.rotate(-180);
    delay(1000);
}
// 状態を LCD に表示
void printStatus(long deg)
{
    lcd.clear();
    String s = String("RPM ");
    s += String(rpm);
    lcd.setCursor(0,0);
    lcd.print(s);
    s = String("Degree ");
    s += String(deg);
    lcd.setCursor(0,1);
    lcd.print(s);
}
</source>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:Arduino]]
[[カテゴリ:Arduino]]

案内メニュー