・pythonスクリプトでサーボを動かしてみましょう。
・ラズパイにサーボドライバーボードを接続し、pythonスクリプトに「bezelie.py」ライブラリをインポートすれば、簡単にサーボを扱うことができます。
事前準備
・ラズパイとサーボドライバーボードが接続されていることをご確認ください。
sample_servo1.py
機能
・ランダムでべゼリーに感情アクションをさせます。
実行方法
1 |
$ python sample_servo1.py |
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#!/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つの感情アクションを順番に実行します。
実行方法
1 |
$ python sample_servo2.py |
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#!/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
機能
・感情アクションは使わず、サーボを個別に動かします。
実行方法
1 |
$ python sample_servo3.py |
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#!/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つのサーボを駆使して、自分なりの感情アクションを作ってみてください。