
前回はこちら です。
- マイコンボードで動くタンクを作ってみました(車体編) | novalue – 自分らしさで彩るメディア
https://no-value.jp/manufacturing/11072/
Scratch(スクラッチ)に関する記事はこちらです。
- Scratch(スクラッチ)で簡単なゲームを作ってみました | novalue – 自分らしさで彩るメディア
https://no-value.jp/programming/11320/ - Scratch(スクラッチ)で簡単なゲームを作ってみました その2 | novalue – 自分らしさで彩るメディア
https://no-value.jp/programming/12669/ - Scratch(スクラッチ)で簡単なゲームを作ってみました その3 | novalue – 自分らしさで彩るメディア
https://no-value.jp/programming/13230/
それでは、今回はモーターをマイコンで制御する部分を作っていきたいと思います。まずはこちらの記事を参考にしました。
- Arduinoでモーターを制御する!モーターの基本を勉強してみる | Device Plus – デバプラ
https://deviceplus.jp/hobby/entry011/
- Arduino電子工作の基本⑤ モーターを動かす | Device Plus – デバプラ
https://deviceplus.jp/hobby/arduino_f05/
使用するモーターは「FA-130」という、ミニ四駆等でよく見かけるモーターです。乾電池1本でも動作しますが、ココロキットとの互換性を考慮して、単三乾電池2本で使用します。

参考記事にもある通り、Arduino(アルドゥイーノ)ではモーターを直接制御することは出来ませんので、モーターと電池の間にスイッチを用意し、そのスイッチのON/OFFをArduinoで制御します。

このスイッチの役目を果たしてくれるのが「トランジスタ」ですが、トランジスタではON/OFFしか制御できず、モーターの反転、つまりタンクの前進・後退をさせる事が出来ません。そこで2つ目の参考記事にある「モータードライバ」を使用します。
では参考記事の通りに部品の型番を調べて…と思ったのですが、製造終了でもう売られていないようです。ですので、データシートを参考に似たような部品がないか探してみます。
データシートに「可逆転モータードライバ」とありますので、そのキーワードで検索してみます。すると、いつも部品を購入しているお店にそれらしいものがある事が分かりました。
- モータードライバ TB6643KQ:半導体 秋月電子通商-電子部品・ネット通販
http://akizukidenshi.com/catalog/g/gI-07688/
「モータードライバ」とありますので一見問題なさそうですが、データシートを見ると動作範囲の電源電圧が10~45Vになっています。単3乾電池2本では動作しませんし、10Vの電圧をモーターにかけてしまうと壊れてしまいます。ですので、もう少し調べてみます。
「DCモータードライバ」というカテゴリーがありましたので、そちらを見てみます。すると、こういった商品がありました。
- 低電圧動作フルブリッジドライバ NJU7386RB1:半導体 秋月電子通商-電子部品・ネット通販
http://akizukidenshi.com/catalog/g/gI-15083/
こちらのデータシートを見ると、電源電圧が1.8~5.5Vとなっています。これならば単3乾電池2本で動作しますので、こちらを使用することにします。
簡単に使用方法を説明しますと、NJU7386の1番、2番ピンにArduinoからの制御信号を入力します。4番、6番ピンにモーターをつなげます。単三乾電池の+を8番ピンにつなぎ、5番ピンを乾電池の-と ArduinoのGNDにつなぎます。これを、各モーターごとに行います。
以上をふまえて、部品配置図を書きました。

部品が揃ったら、実際に動くかどうか「ブレッドボード」という物に配線してテストしてみます。ブレッドボードははんだ付けせずに部品を配置して、部品・回路に異常が無いか確認出来てとても便利です。
それでは、テストプログラムを書き込んで動かしてみたいと思います。
プログラムは、部品が届くまでの間にArduinoでScratchを動かせる環境を整えておきましたので、Scratchで作成しました。
Scratchの環境構成はこちらの記事を参考にしました。
- ScratchでArduinoを動かそう! | パソコン工房 NEXMAG
https://www.pc-koubou.jp/magazine/21643
問題なく動くようですので、ユニバーサル基板に部品をはんだ付けしていきます。


こちらも動作チェックが完了したら、プログラムを詰めていきます。前進 → 90°右旋回 → 前進の繰り返しで、四角く回る動作をさせたいと思います。

1秒前進 → 0.8秒右旋回の繰り返しでおおむね四角くまわりました。
とりあえず完成、と行きたいところですが、USBケーブルが気になりますのでArduinoにプログラムを書き込んでケーブルなしで動作させたいと思います。
では、Scratchの通りにプログラムを記述していきます。
void setup() { //ピンの設定などを行う void setup()
pinMode(5, OUTPUT); //5番ピンをOUTPUT(出力)に指定
pinMode(6, OUTPUT); //6番ピンをOUTPUT(出力)に指定
pinMode(9, OUTPUT); //9番ピンをOUTPUT(出力)に指定
pinMode(10, OUTPUT); //10番ピンをOUTPUT(出力)に指定
}
void loop() //プログラム本体(ずっと繰り返す)
{
for (int i=0; i<4; i++){ //整数iを用意して0を代入 i <4となるまで繰り返す iは1ずつ増やす(i++)
digitalWrite(5, HIGH); // LEDpin5に5Vを出力
digitalWrite(6, LOW); // LEDpin6に0Vを出力
digitalWrite(9, LOW); // LEDpin9に0Vを出力
digitalWrite(10, HIGH); // LEDpin10に5Vを出力
delay(1000); // 1000msec待つ(直進)
digitalWrite(5, HIGH); // LEDpin5に5Vを出力
digitalWrite(6, HIGH); // LEDpin6に5Vを出力
digitalWrite(9, HIGH); // LEDpin9に5Vを出力
digitalWrite(10, HIGH); // LEDpin10に5Vを出力
delay(500); // 500msec待つ(停止)
digitalWrite(5, HIGH); // LEDpin5に5Vを出力
digitalWrite(6, LOW); // LEDpin6に0Vを出力
digitalWrite(9, HIGH); // LEDpin9に5Vを出力
digitalWrite(10, LOW); // LEDpin10に0Vを出力
delay(800); // 800msec待つ(90°右旋回)
digitalWrite(5, HIGH); // LEDpin5に5Vを出力
digitalWrite(6, HIGH); // LEDpin6に5Vを出力
digitalWrite(9, HIGH); // LEDpin9に5Vを出力
digitalWrite(10, HIGH); // LEDpin10に5Vを出力
delay(500); // 500msec待つ(停止)
} //For 文の終わりの位置
digitalWrite(5, HIGH); // LEDpin5に5Vを出力
digitalWrite(6, LOW); // LEDpin6に0Vを出力
digitalWrite(9, LOW); // LEDpin9に0Vを出力
digitalWrite(10, HIGH); // LEDpin10に5Vを出力
delay(1000); // 1000msec待つ(直進)
digitalWrite(5, HIGH); // LEDpin5に5Vを出力
digitalWrite(6, HIGH); // LEDpin6に5Vを出力
digitalWrite(9, HIGH); // LEDpin9に5Vを出力
digitalWrite(10, HIGH); // LEDpin10に5Vを出力
delay(500); // 500msec待つ(停止)
}
Arduinoに書き込む際は、Scratchのブートローダーではなく、Arduinoのブートローダーを新たに書き込むか、書き込み済みのATMega328に交換してください。
誤作動して直進してしまいました。では気を取り直してもう一度。
ご覧の様に、USBケーブルなしでも単独で動作出来ました。今回はここまでにしたいと思います。
まだArduinoの端子があまっていますので、LEDやセンサーを追加していきたいと思います。 ではまた。