最終目標は車輪を動かして走るラジコンみたいなものを作りたいのだが、とりあえずはモーターが動かないとどうしようもない。しかし当たり前のようだがモーターをそのまま動かすことはできないので、Arduinoでよく使われているモータドライバICのTA7291Pでモーターを動かすことにした。
----------------------------------------
※注意
TA7291Pはデータシートを見ると分かるように、入力がHIGHになるときの最低電圧が3.5Vとなっています。対してBeagleBone BlackのHIGHの出力電圧は3V3(つまり3.3V)ですので、モータードライバの個体によっては動作しない可能性があります。
まず、回路はこんな感じにしてみました。

とりあえず動かすだけなので、ブレットボードにそのまま挿してます。次にプログラム。pythonです。今使っているDebian(20150301)では標準インストールされていました。
作成したファイル:motor_test_double.py
# -*- coding: utf-8 -*-
import Adafruit_BBIO.GPIO as GPIO #ライブラリのインポート
GPIO.setup("P8_13", GPIO.OUT) #GPIO.setup()でGPIOを設定する
GPIO.setup("P8_14", GPIO.OUT) #GPIO.OUTは出力
GPIO.setup("P8_15", GPIO.OUT) #GPIO.INは入力
GPIO.setup("P8_16", GPIO.OUT)
while True:
try:
GPIO.output("P8_13", GPIO.LOW) #GPIO.output()を使って
GPIO.output("P8_14", GPIO.HIGH) #それぞれのピンにLOWかHIGHの出力
GPIO.output("P8_15", GPIO.LOW)
GPIO.output("P8_16", GPIO.HIGH)
except KeyboardInterrupt: #Ctrl+Cで終了するように設定
break
GPIO.cleanup() #終了処理
pythonで入力ポートを扱うにはまず"Adafruit_BBIO.GPIO"というものをインポートする必要があります。今回は"GPIO"にリネームしています。
※GPIOピンとはArduinoでのデジタルピンのことです。要するにLOWかHIGHしか出力しません。ただし注意しなければならないのはArduinoはLOWが0V、HIGHが5Vの出力に対して
Beaglebone BlackはHIGHの出力が3.3Vであることです。
ファイルが完成したら、Beaglebone Black上のTerminalで作成したファイルを次のコマンドで実行します。
sudo python motor_test_double.py
結果的にこうなります。まあ、一応動いているので良しとします。
この記事へのコメント