サーボモーターアートワーク
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 3 | ||||
| × | 36 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 36 | ||||
| × | 5 |
必要なツールとマシン
> |
| |||
|
アプリとオンラインサービス
> |
|
このプロジェクトについて
下のビデオは、36個のサーボモーターが電子芸術作品を作成するときの動作を示しています。 ArduinoUnoと3つの16チャンネルPWMサーボコントローラーが舞台裏で働いています。これの元々のインスピレーションは、私が現代美術館で見た450のサーボを備えたはるかに大きなバージョンでした。しかし、36個のサーボしかないこの小さなバージョンでさえ、いくつかの興味深い効果を提供します。
ビデオには表示されていないオプション機能がありますが、表示をインタラクティブにするために追加することができます。これは純粋にオプションであり、ソフトウェアはそれがなくても正常に動作します。このオプションでは、5つの超音波距離センサーがディスプレイの上端の裏側に沿って取り付けられています。中央のセンサーの上に手を置くと、宇野はインタラクティブモードになり、距離センサーの上を移動すると、すべてのサーボが手に追従しようとします。手を数秒間離すと、プログラムはディスプレイショーに戻ります。繰り返しますが、必要に応じてこのオプションを追加できます。そうしないと、ソフトウェアはそれがなくても問題なく動作します。
ハードウェア
ご覧のとおり、このプロジェクトは24 "x48"のペグボード上に構築されました。幅は32インチにカットされました。サーボは4インチ離して取り付けられ、ホットグルーでペグボードの背面に固定されています。 31/4インチにカットされたアイスキャンデースティックがサーボのシャフトに取り付けられています。これもホットグルーを使用しています。
SG90サーボモーターは、このプロジェクトで唯一の高価なアイテムです。あなたはAmazonで$ 20で8個のセットを手に入れることができます。それでも、サーボに100ドルを投資する必要があります。 SG90はすべて180度のサーボであると想定されていますが、ほとんどの場合、完全には機能しません。いくつかは足りないので、破棄する必要があります。 8個セットを5個購入すると、160度以上移動する36個の商品を見つけることができるはずです。
サーボを最小位置(PWM 150の位置)に設定する必要があります。ポプシクルスティックは、正面から見て、この最小位置で水平および右を向いて取り付けられています。サーボがこの最小位置にあることを保証するために使用できる小さなプログラムを提供しました:SetServosToMinimum。
<図>上の写真は裏側のレイアウトです。 3つのPWMコントローラーはサーボの左側に取り付けられています。 30ワット5ボルトの電源は右端にあります。 Arduinoは、USB電源アダプターを介して個別に電力を供給されます。 USBケーブルを外し、USB延長ケーブルを介して、プログラムを変更するためにコンピューターに接続できるようにするために、この方法でのみ実行します。少し変に見えますが、便利だと思います。
ディスプレイの上部に取り付けられたオプションの超音波距離センサーも表示されます。それらを取り付けるために、ホットグルーと追加のアイスキャンディースティックが採用されました。宇野の下にある小さなプロトタイピングボードは、すべての超音波センサーへの電力と接地を容易にするためにあります。
ソフトウェア
私はAdafruitのPWMサーボドライバーライブラリを使用して16チャネルサーボコントローラーを処理しているので、Adafruitから取得してArduinoライブラリにインストールする必要があります。私のソフトウェアは、オプションの超音波センサーの有無にかかわらずそのまま使用できます。それは、繰り返される前に3分強続くショーでさまざまな効果を示します。オプションのセンサーが取り付けられている場合、中央のセンサーに手を置くとインタラクティブモードになります。
ソフトウェアにはたくさんのものがあります。ここではすべてを説明しようとはしませんが、それがどのように機能するかについて少し情報を提供します。私は2つのテーブルを持っています。 curPosテーブルには、各サーボの現在位置を3で割った値が格納されます。 tarPosテーブルには、各サーボの目的の位置を3で割った値が格納されます。それらは2つの理由で3で割られます。まず、バイト単位で保存できます。次に、サーボを常に3ステップずつ移動しています。
Unoは最初は各サーボの位置を認識していないため、セットアップルーチンはすべてのサーボを垂直位置に設定し、すべてのcurPos変数とtarPos変数をその垂直位置に一致するように設定します。次に、tarPosで目的の位置を変更することにより、サーボをそこから他の位置に移動できます。
goToTargets()と呼ばれるサブルーチンは、サーボを移動する主な方法です。 tarPosでターゲットを設定することにより、サーボがどこに移動するかを制御します。次に、goToTargetsルーチンを使用して、サーボがそこに移動する速度を制御できます。速度を制御する方法は2つあります。サーボを15ステップ刻みでターゲットに向かって移動します。ここで、サブルーチンに入力された担当者は15ステップの倍数を提供します。もう1つの入力はmydelayで、goToTargetsの各呼び出しにミリ秒単位の遅延を追加するだけです。
他にもたくさんのものがありますが、基本的に他のすべては、提示されたさまざまな効果のさまざまなセットアップと実装にすぎません。
オプションの対話型関数は、trackRoutineと呼ばれるサブルーチンによって処理されます。これは、goToTargetルーチンが中央の超音波センサーのどこかでオブジェクト(手)を検出したときに呼び出されます。センサー上を移動するときに、すべてのサーボが手の動きに追従するようにします。数秒間手を感知しなかった場合、それは戻り、通常のプログラムが再開されます。
コード
- ArduinoUno用のServosArtソフトウェア
ArduinoUno用ServosArtソフトウェア Arduino
プレビューなし(ダウンロードのみ)。
回路図
Unoとサーボが3つの16チャンネルコントローラーを介してどのように接続されているかを示します 5つの超音波距離センサーをUnoに接続して、サーボが手の動きを追跡できるようにします。 製造プロセス