13,002
回編集
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]] |