・pythonスクリプトでサーボを動かしてみましょう。
・ラズパイにサーボドライバーボードを接続し、pythonスクリプトに「bezelie.py」ライブラリをインポートすれば、簡単にサーボを扱うことができます。
事前準備
・ラズパイとサーボドライバーボードが接続されていることをご確認ください。
sample_servo1.py
機能
・ランダムでべゼリーに感情アクションをさせます。
実行方法
$ python sample_servo1.py
ソースコード
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Bezelie Sample Code for Raspberry Pi : ランダムでサーボを動かす
# ラズパイにサーボドライバーとサーボを接続してから実行してください。
# ライブラリの読み込み
from time import sleep # ウェイト処理
import bezelie # べゼリー専用モジュール
# Setting
bez = bezelie.Control() # べゼリー操作インスタンスの生成
bez.moveCenter() # サーボをセンタリング
sleep(0.5)
# Main Loop
def main():
try:
print "開始します"
while True:
bez.moveRnd() # 7種のアクションをランダムで発生
bez.stop() # サーボ停止命令
sleep (0.5)
except KeyboardInterrupt:
print " 終了しました"
if __name__ == "__main__":
main()
解説
・8行目でべゼリー専用のモジュールを読み込んでいます。
・11行目でサーボを動かす準備をしています。
・ランダムなのでどんな動きをするのか予想できませんが、なんでもいいからとりあえずべゼリーにアクションさせたいときは、この「moveRnd()」をご利用ください。
sample_servo2.py
機能
・べゼリーの7つの感情アクションを順番に実行します。
実行方法
$ python sample_servo2.py
ソースコード
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Bezelie Sample Code for Raspberry Pi : べゼリーの基本アクション
# ラズパイにサーボドライバーとサーボを接続してから実行してください。
# ライブラリの読み込み
from time import sleep # ウェイト処理
import bezelie # べゼリー専用モジュール
# Setting
bez = bezelie.Control() # べゼリー操作インスタンスの生成
bez.moveCenter() # サーボをセンタリング
sleep(0.5)
# Main Loop
def main():
try:
print "開始します"
while True:
print "happy"
bez.moveAct('happy') # しあわせ
bez.stop()
sleep (0.5)
print "nod"
bez.moveAct('nod') # うなづき
bez.stop()
sleep (0.5)
print "why"
bez.moveAct('why') # 首かしげ
bez.stop()
sleep (0.5)
print "around"
bez.moveAct('around') # 見回し
bez.stop()
sleep (0.5)
print "up"
bez.moveAct('up') # 見上げ
bez.stop()
sleep (0.5)
print "wave"
bez.moveAct('wave') # くねくね
bez.stop()
sleep (0.5)
print "etc"
bez.moveAct('etc') # ETC
bez.stop()
sleep (0.5)
except KeyboardInterrupt:
print " 終了しました"
if __name__ == "__main__":
main()
解説
・bez.moveAct()のカッコの中に「happy」「nod」などのキーワードを記入することで、特定の感情アクションを行うことができます。
・べゼリーに特定の感情アクションをさせたい時は、この「bez.moveAct()」を使ってみてください。
sample_servo3.py
機能
・感情アクションは使わず、サーボを個別に動かします。
実行方法
$ python sample_servo3.py
ソースコード
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Bezelie Sample Code for Raspberry Pi : サーボを個別に動かす
# ラズパイにサーボドライバーとサーボを接続してから実行してください。
# ライブラリの読み込み
from time import sleep # ウェイト処理
import bezelie # べゼリー専用モジュール
# Setting
bez = bezelie.Control() # べゼリー操作インスタンスの生成
bez.moveCenter() # サーボをセンタリング
sleep(0.5)
# Main Loop
def main():
try:
print "開始します"
while True:
print "Head 上回転"
bez.moveHead(10) # 頭の上下
sleep (0.5)
print "Head 下回転"
bez.moveHead(-10) # 頭の上下
sleep (0.5)
print "Head 中央"
bez.moveHead(0) # 頭の上下
sleep (1)
print "Back 右回転"
bez.moveBack(20) # 頭の左右
sleep (0.5)
print "Back 左回転"
bez.moveBack(-20) # 頭の左右
sleep (0.5)
print "Back 中央"
bez.moveBack(0) # 頭の左右
sleep (1)
print "Stage 右回転"
bez.moveStage(30) # 体の左右
sleep (0.5)
print "Stage 左回転"
bez.moveStage(-30) # 体の左右
sleep (0.5)
print "Stage 中央"
bez.moveStage(0) # 体の左右
sleep (1)
except KeyboardInterrupt:
print " 終了しました"
if __name__ == "__main__":
main()
解説
・Headサーボは頭の上下、Backサーボは頭の左右回転、Stageサーボは体の左右回転を行います。サーボじたいの回転最大角度は±90度ですが、べゼリーのパーツどうしが干渉してしまうので、Headは±15度程度、Backは±20度程度、Stageは±30度ぐらいまでしか回りません。
・サーボを真上から見下ろした場合、時計回りなら正の値、反時計回りなら負の値を指定してください。
応用
・3つのサーボを駆使して、自分なりの感情アクションを作ってみてください。
