2012年8月9日木曜日

Raspduino (Raspberry Pi 用GPIOアダプタ) 動作確認1

 前回のRaspberry Pi 用GPIOアダプタの配線がだいぶ進んだので、動作確認をしてみました。一応、Raspduinoとでも呼んでおきます。そういえば、PCWatchの武蔵野電波のプロトタイパーズにRaspberry Piの記事 がありました。武蔵野電波は日本語訳リファレンスがあるArduinoのWikiとか、船田氏の訳書とかも有名ですね。この記事ではハードウェアペリフェラルの26pinにファイルとしてアクセスしていますが、自分は使い始めたばかりのpythonで、ここにあるRPi.GPIO とか ここのWiringPi とかで行ってみたいと思います。

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT)

while 1:
 GPIO.output(22, True)
 time.sleep(0.5)
 GPIO.output(22, False)
 time.sleep(0.5)

まずは、RPi.GPIO の方でディジタル出力を確認しました。LEDと抵抗を出力ピンとグランドの間に入れて、上記のソースでLEDの点滅を確認しました。 次に、WiringPi の方でPWM出力を試してみました。
import wiringpi
import time

io = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_PINS)
io.pinMode(1, io.PWM_OUTPUT)

while 1:
    count = 0;
    while count < 100:
        io.pwmWrite(1, count)
        count += 1
        time.sleep(0.1)
    while count > 0:
        io.pwmWrite(1, count)
        count -= 1
        time.sleep(0.1)



 抵抗は通さずに、PWM出力ピン→LED→GNDに接続してしまうことにしました。



 タイマーでじわじわ明るくなったり、暗くなったりするのを確認。調子に乗って、Motor Shieldを装着。


 こちらは動きませんでした・・・。PWM出力AchのLEDはそれっぽく強弱を繰り返して点灯するのですが、モータは回りません。PWMの信号周波数とかの問題だろうか?週末にオシロを引っ張りだしてきて、出力信号を見てみることにしよう。
 動きました。PWM出力以外のdirectionピンやbrakeピンを初期化していなかったのと、アナログ出力の設定値が0~254だと勝手に思っていたんですが、実際には0~1023でした。Arduinoでは254なので、そう思い込んでいて、LEDくらいは光るけどモータを動かすには足りない値を設定していたようです。breakピンの状態に寄ってはブレーキがかかっていたかもしれません。