モーターも買い直し、歯車も購入し、ここまでで実にパタパタ本体(2万)の半分くらいのお金をかけてきましたが、ようやく部品としては整ってきた感じです。
23

とりあえず、このサイトに書いてあるやり方をそのままやってみます。

サイトにある通り、L6470のドライバーとArduinoをこのようにつなぎます。

ドライバとモーターの配線は、下の写真のような感じです。上から、赤、緑、青、黄。

04


ドライバの電源は、写真上の赤い線2本から供給します。12Vで、1Aか2Aのものが良いようです。
できれば2Aのほうが余裕があって良いようです。
私は、あまり使っていない外付けハードディスクのACアダプタがたまたまその出力だったので、それを使うことにしました。

サンプルコードをArduinoのアプリに入力して、「マイコンボードに書き込む」を押すと…


おお、回る回る。
スピードや急停止などもコマンドで結構簡単に制御できるんですね。

このサンプルコードは、右まわり、左回り、ゆっくりなど、いろいろな回り方をするようにできています。パタパタを動かすにはちょっと向かないので、少しだけコードを改造して、単純に一定時間まわるようにしました。こんな感じ。

#include <Arduino.h>
#include <SPI.h>

// ピン定義。
#define PIN_SPI_MOSI 11
#define PIN_SPI_MISO 12
#define PIN_SPI_SCK 13
#define PIN_SPI_SS 10

void setup()
{
delay(2000);
// ピン設定。
pinMode(PIN_SPI_MOSI, OUTPUT);
pinMode(PIN_SPI_MISO, INPUT);
pinMode(PIN_SPI_SCK, OUTPUT);
pinMode(PIN_SPI_SS, OUTPUT);
digitalWrite(PIN_SPI_SS, HIGH);
//SPI通信開始
SPI.begin();

// シリアル通信。
Serial.begin(9600);
 
SPI.setDataMode(SPI_MODE3);//SCKの立ち上がりでテータを送受信&アイドル時はpinをHIGHに設定
SPI.setBitOrder(MSBFIRST);//MSBから送信

//前のコマンドの引数を消去
L6470_send(0x00);//nop
L6470_send(0x00);
L6470_send(0x00);
L6470_send(0x00);
//デバイスリセットコマンド
L6470_send(0xc0);//ResetRevice

L6470_setup();//L6470を設定


}

int i = 0;

void loop(){
  
  //以下に動きを書くとその通りに動く

while(i < 61 ){//連続運転 全部で61枚を回転させると、一周+1になる
L6470_send(0x50);//Run(DIR,SPD),0x51:正転,0x50:逆転 
L6470_send(0x00);//SPD値(20bit)いじらない
L6470_send(0x20);//ここの数字を下げると遅くなる
L6470_send(0x00);//いじらない
delay(133);//この数字の時間だけ動作する
L6470_send(0xB8);//HradStop_急停止
i++;
}
 
}

void L6470_send(unsigned char add_or_val){
digitalWrite(PIN_SPI_SS, LOW); 
SPI.transfer(add_or_val); // アドレスもしくはデータ送信。
digitalWrite(PIN_SPI_SS, HIGH); 
}

void L6470_setup(){
//最大回転スピード
L6470_send(0x07);//レジスタアドレス
L6470_send(0x00);//値(10bit),デフォルト0x41
L6470_send(0x30);
//モータ停止中の電圧設定
L6470_send(0x09);//レジスタアドレス
L6470_send(0x20);//値(8bit),デフォルト0x29
//モータ定速回転時の電圧設定
L6470_send(0x0a);//レジスタアドレス
L6470_send(0x40);//値(8bit),デフォルト0x29
//加速中の電圧設定
L6470_send(0x0b);//レジスタアドレス
L6470_send(0x40);//値(8bit),デフォルト0x29
//減速中の電圧設定
L6470_send(0x0c);//レジスタアドレス
L6470_send(0x40);//値(8bit),デフォルト0x29

//フ ル ス テ ッ プ,ハ ー フ ス テ ッ プ,1/4, 1/8,…,1/128 ステップの設定
L6470_send(0x16);//レジスタアドレス
L6470_send(0x00);//値(8bit)



さっそく、歯車を本体に当ててみると…


おお、パタパタしてる!パワーは十分なようです。

これで基本的な部分は実現したことになります。意外と簡単です。
次は、プログラム部分を勉強して、パタパタをもう少し自在に動かしたいものです。
その辺を考えていきます。