この記事をシェアしよう!

最新のRaspbianにはGPIO制御ライブラリWiringPiがプリインストールされていて【第25回】でもLXTerminalで実行できたので、Pythonでもこのままで使えるのかと思っていました。ところが、元々、C言語で書かれたWiringPiをPythonで使うには、WiringPi2-Pythonという別のパッケージをインストールする必要があることが分かりました。

WiringPi2-Pythonのインストール

LXTerminalを起動し、次のコマンドでWiringPi2-Pythonのパッケージをダウンロードします。

次のコマンドで、WiringPi2-Pythonのディレクトリに移動します。

ディレクトリ内のセットアップを実行します。

今回使った部品

  • Raspberry Pi 3 Model B × 1
  • 40Pinフラットリボンケーブル
  • 40Pin T型GPIO拡張ボード
  • ブレットボード × 1
  • サーボモーター SG90 × 1
  • 電源アダプター5V 2.5A × 1
  • microUSB用変換基板 × 1
  • ジャンプワイヤー(オス/オス) × 5
デジタル・マイクロサーボ SG90
梅本合同会社
売り上げランキング: 11,230

実体配線図

回路は【第25回】と同じで、サーボモーターSG-90の電源は、Raspberry Piの電源アダプターとは別の電源アダプターを用意し、microUSB用変換基板を介して供給します。

・モーター端子(茶色) → GND

・microUSB用変換基板(GND) → GND

・モーター端子(赤色) → microUSB用変換基板(VCC)

・モーター端子(橙色) → GPIO12

Python3でサーボモーターを回す

次のコマンドで、ホームディレクトリに戻ります。

Python3を起動します。

WiringPi2をインポートします。

次のコマンドで、GPIOを初期化します。

“0”が返ってきたら、初期化の完了です。

GPIO12の出力をハードウェアPWMに設定します。

PWM出力モードをサーボモーター制御に向いたmark:spaceに設定します。

pwmRangeを既定の10bit:1024とします。

pwmClockは【第25回】での計算通り、375とします。

【第25回】での計算から、サーボモーターのフルスイングの中央を狙って、GPIO12のPWMをデューティー比:74/1024とします。

ジジジっという音と共にサーボモーターのアームがフルスイングの中央まで回転しました。

【第25回】での計算から、サーボモーターのフルスイングを目指して、GPIO12のPWMをデューティー比:25/1024とします。

サーボモーターのアームが時計方向に90°回転しました。

【第25回】での計算から、今度は逆方向にフルスイングを目指して、GPIO12のPWMをデューティー比:123/1024とします。

今度は、サーボモーターのアームが反時計方向に180°回転しました。

出力を止める為、GPIO12のPWMをデューティー比:0/1024とします。

サーボモーターからジジジっという音が消えました。

次のコマンドで、Python3から抜けます。

GPIO12の設定を既定に戻しておく

念の為、次のコマンドでGPIO12の出力設定を確認します。

BCM列”12(GPIO12)”番の”Mode”列が、”ALT0”のままでした。

次のコマンドでGPIO12の設定を既定に戻しておきます。

もう一度、GPIO12の出力設定を確認します。

BCM列”12(GPIO12)”番の”Mode”列が、”ALT0”から既定の”IN(入力)”に戻っていました。

<<【第25回】|【第27回】>>

この記事をシェアしよう!