工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

リモコングリッパーボット

コンポーネントと消耗品

RuntRoverハーフパイントシャーシ
× 1
Arduino UNO
× 1
V5シールド
× 1
メス/メスのジャンパー線
× 1
L9110S
× 1
90°シングルアングルチャンネルブラケット(585424)
× 1
軽量サーボハブ、双葉
× 1
標準グリッパーキットA(637094)
× 1
MG995
× 1
標準サーボプレート
× 1
90°シングルアングルチャンネルブラケット
× 1
5スロットAAホルダー
× 1
AA充電式バッテリー
× 5
.750 "8-32ナイロンスペーサー
× 2
.500 "6-32ネジとナット
× 8
.3125 "6-32ネジ
× 8

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

数ヶ月前、息子からリモコンボットを作るように頼まれました。彼は私に彼が欲しいもののリストをくれました、そして私たちはそれを管理可能なリストに絞り込みました:)これは私が彼のために構築することになったものです...

  • UNOとV5センサーシールドを取り、それらをスナップします。
  • 結合されたUNO /センサーボードをボットの中央にあるクリップホルダーに配置します。
  • 両面テープを取り、モータードライバーを左側の内壁に配置し、Bluetoothアダプターを右側の壁に配置します。

このプロジェクトでは、独自のシャーシを作成することも、別のシャーシを選択することもできます。選択はあなた次第です。

ステップ1:必要なソフトウェア

ダウンロードする必要があるもの:

  • Arduino IDE
  • Python 2.7(tkinterを使用したフルインストール)
  • pySerialライブラリ
  • .zipに添付されたL9110Sモーターコントローラーライブラリ(このステップのファイルを参照)
  • 以下のロボットコードまたは添付の.zip(このステップのファイルを参照)
  • Pythonリモートコントロールアプリケーション(このステップのファイルを参照)

ステップ2:ハードウェア部品表

必要な部品は次のとおりです。

  • RuntRoverハーフパイントシャーシまたは適切な4WD密閉型交換品
  • ArduinoUnoまたは同様のボードとUSBケーブル
  • V5センサーシールド
  • L9110Sモータードライバー(安いのでカップルを入手してください)
  • MG995サーボまたは別の適切な代替品x2
  • HC-05またはHC-06Bluetoothアダプターx1
  • 標準サーボプレートBx1
  • 90度ブラケットx1
  • シングルブラケットx2
  • 軽量サーボハブ(双葉の場合は525125)x1
  • 標準グリッパーキットAx1
  • メスからメスへのジャンパー線
  • 5本の充電式単3電池(NiMH)と充電器
  • 両面粘着テープと小さな結束バンド
  • 「AA」5スロットバッテリーパック(AA充電式オプションを選択した場合)
  • 6vNiMHまたは7.4vLi-ionバッテリーパックと充電器
  • 1.250 "6-32ネジx2
  • .750 "8-32ナイロンスペーサーx2
  • .500 "6-32ネジとナットx8
  • .3125 "6-32ネジx8

部品の多くは、eBayや、Sparkfun、Adafruit、ServoCityなどの他のサプライヤーから直接調達できます。

ビルドを開始する準備ができているものをすべて購入、収集、ダウンロードした後。

ステップ3:組み立て-シャーシ

まず、シャーシまたはビデオに付属の手順に従ってシャーシを組み立てます。終了すると、画像のようなものができあがります。コントローラーを保持するプレートをボットに配置するときは、必ず中央の穴に配置してください。これにより、ボットの前面と背面にスペースが残ります。

注:先に進む前に、他のボットコンポーネントを装着しているときにモーターを損傷しないように、4つのホイールをすべて取り外してください。

ステップ4:グリッパーを組み立てる

この動画の手順に従ってグリッパーを組み立てます。終了すると、画像のようなものが表示されます。

ステップ5:グリッパーの取り付け-ステップ1

この手順では、90度のブラケット、軽量のサーボハブ、および4本の.3125 "ネジを使用します。

サーボハブを取り、ブラケットの片側に配置し、写真のように.2125 "ネジで固定し、脇に置きます。2つの短いネジにナットを配置し、締めます。次に、2つのシングルブラケット1.250を説明します。 「ネジとナット付き.500」ネジ2本、ナイロンスペーサー2本、サーボプレートB。1つのブラケットを1つ取り、ハーフピントボットの内側に配置し、左側の穴に2つの1.259インチネジを取り付けます(内側)と右側の2.500 "ネジ。すべてのネジの頭は写真のようにボットの内側にあります。次に、2番目のシングルブラケットをボットの外側のネジに配置します。次に、ナイロンスペーサーを突き出た長い方(1.250)に置き、サーボプレートを長いネジにねじ込みます。サーボプレートに接続されているネジを適切なサイズの六角キーまたは通常のネジを使用している場合はネジドライバーで締めます。

必要に応じて写真を参考にしてください。

<図> <図> <図> <図> <図> <図>

ステップ6:グリッパーの取り付け-ステップ2

  • 次に、残りのサーボを取り出し、背骨を上にしてサーボブラケットに配置します。 4本の.3125 "ネジで固定します。
  • 次に、サーボハブが付いた90度ブラケットを取り、写真のようにブラケットとグリッパーの間のスペーサーとして8-32ナットの2つを使用して、.500 "ネジの4つでグリッパーを取り付けます。グリッパーの上部にある別のナットで固定します(ネジを反対方向に回す場合はブラケットの下にあります)
  • 次に、グリッパーアセンブリを取り出してサーボに配置し、サーボスクリュー(サーボパケットから)を使用して所定の位置に保持し、しっかりと固定します。

終了したら、2本のサーボワイヤーをボットの内側にある平らなブラケットの穴に通します。

詳細とリファレンスについては、写真を参照してください。

<図> <図> <図> <図> <図>

ステップ7:電子機器の取り付け

  • UNOとV5センサーシールドを取り、それらをスナップします。
  • 結合されたUNO /センサーボードをボットの中央にあるクリップホルダーに配置します。
  • 両面テープを取り、モータードライバーを左側の内壁に配置し、Bluetoothアダプターを右側の壁に配置します。
<図> <図> <図>

ステップ8:配線-モーター

  • モータードライバーのA-1Aピンからセンサーシールドのピン5へ
  • モータードライバーのA-1Bピンからセンサーシールドのピン6へ
  • モータードライバーのB-1Aピンからセンサーシールドのピン3へ
  • モータードライバーのB-1Bピンからセンサーシールドのピン11へ

ロボットの正面をあなたから遠ざけて、左側のワイヤーを取り、-

  • 左側の2本の黒いワイヤーをモーターAの最初の出力ネジ留め式端子に接続します
  • 左側の2本の赤いワイヤーをモーターAの2番目の出力ネジ留め式端子に接続します

右側のワイヤーを取り、-

  • 左側の2本の黒いワイヤーをモーターBの最初の出力ネジ留め式端子に接続します
  • 左側の2本の赤いワイヤーをモーターBの2番目の出力ネジ留め式端子に接続します

サーボ:

  • 次に、Yサーボワイヤをセンサーシールドのピンライン2に接続します。白またはオレンジの線は常に信号線です。
  • ここで、X(グリッパー)サーボワイヤーをセンサーシールドのピンライン7に接続します。白またはオレンジの線は常に信号線です。

ステップ9:Bluetoothモジュールの配線

  • BluetoothアダプターTx->センサーシールドピン0
  • BluetoothアダプターRx->センサーシールドピン1

ステップ10:電力を追加する

5'aa '(または他の6vパック)バッテリーパックからの電源リード線をセンサーシールドの電源ネジ端子に接続します:

  • 赤からVcc
  • 黒からGND
  • 次に、V5センサーシールドのジャンパーがジャンパーピンに配置されていることを確認します。
  • L9110sドライバーのGNDピンをセンサーシールドのGNDピンに接続します。
  • モーター用に選択した6vまたは7.2vバッテリーまたはその他のバッテリーからのプラス線をL9110SモータードライバーのVccピンに接続します。
  • モーターバッテリーからのマイナス(GND)ワイヤーをモーターシールドのGNDピンに接続します。

手順11:HC05 / HC06Bluetoothモジュールの構成

次に、OSの[コントロール]または[システム]パネルからPCのBluetoothデバイス設定に移動するか、Googleを使用して支援する必要があります。

考えられるOSBluetoothセットアップ情報:

  • ウィンドウズ
  • Linux(Linux Mintではbluemanを使用していますが、詳細についてはディストリビューションを参照してください)
  • Mac

割り当てられているシリアルポートのデバイス名または番号をメモする必要があります。

ステップ12:コードを読み込む

配線をチェックして再チェックした状態 、コードをロードする時が来ました。 Arduino IDEのインストール方法については、Arduinoサイトの指示に従ってください。

IDEをインストールしたら、次にL9110モータードライバーライブラリをインストールできます。これを行うには、STEP 1に含まれているL9110Driver.zipという名前のzipファイルをダウンロードして、Arduinoライブラリフォルダーに解凍するか、ライブラリを追加する方法に関する次の手順に従います。

IDEとモータードライバーライブラリがインストールされたので、ステップ1にあるblue_t_slave.zipという名前のzipファイルからロボットコードをArduinoIDEにロードします。これらのファイルもこのステップに含まれています。

PCとArduinoをUSBケーブルで接続します。次に、IDEの[ツール]-> [ボード]メニューからボードを選択します。このプロジェクトのUno(Unoと異なる場合は、使用しているボードを選択します)[ツール]-> [ポート]メニューから、COMポートを選択します。これが完了したら、アップロードボタンをクリックします。すべてがうまくいけば、コードがロードされました。そうでない場合は、IDEと関連する問題のヘルプについてここを参照してください。

ステップ13:Pythonコントロールアプリケーションを実行する

Pythonリモートコントロールアプリケーションを実行するには、この手順からzipファイルをダウンロードし、実行元の場所に解凍します。次に、コマンドシェル(ターミナル、cmd.exeなど)を開き、ファイルを抽出したディレクトリに移動します。次のように入力します: python rover.py コマンドラインから、画像のようなウィンドウがポップアップするはずです。そうでない場合は、Pythonエラーを探して修正します(つまり、ライブラリがないなど)。必要に応じて、Pythonサイトが役立つ場合があります。

アプリが実行されると、準備が整います。

次に、ボットの電源を入れます。次に、アダプタの通信ポートを入力し、[接続]ボタンをクリックします。数秒後、他のコントロールが有効になり、接続ボタンが無効になっていることがわかります。これは、ロボットに接続していることを意味します。 Bluetoothアダプターに接続できない場合は、Googleの魔法を使って支援する必要があります。

制御アプリケーションは使いやすく、マウスまたはキーボードの制御が可能です。

キーボードコントロールは次のとおりです。

  • 矢印は前方、後方、左に90度、右に90度回転します
  • a-左に45度回転します
  • s-右に45度曲がる
  • h-停止(停止)
  • y-グリッパーのY軸を設定します
  • u-グリッパーの開閉を設定します
  • c-グリッパーホーム

順方向コマンドと逆方向コマンドは一定です。つまり、実行後、新しい方向が送信されるか、コマンドを停止するまで、ボットを動かし続けます。

90度と45度の回転は一時的なものです。つまり、少し遅れて、ボットの移動を停止します。

グリッパースライダーは、ボットにグリッパーを自動的に設定しません。セットを実際に実行するには、対応する「セット」ボタンまたはキーを押す必要があります。

スライダーの値の範囲は0〜180です。

  • グリッパーのY軸:0は完全に上、180は完全に下です。
  • グリッパーの開閉:0は完全に閉じ、180は完全に開いています。

「切断」ボタンを使用して、プログラムの使用を停止します。これにより、ボットを停止してグリッパーをホームにするコマンドが送信されます。

<図>


コード

  • PythonドライバーGUI
  • ローバーコード
PythonドライバーGUI Python
#!/ usr / bin / env python ## Linux、BSD、またはMac OSXの場合、このスクリプトでchmod + xを実行して、実行可能ファイルを作成できます############# Rover control app ##スコットビーズリーによって書かれました-2015#自由に使用または変更できます。エンジョイ。############ import sysimport serialimport timefrom Tkinter import * import tkFontimport tkMessageBox#applicationclass App(Frame)のウィンドウを作成します。#ウィンドウを作成します。 False self.message =StringVar()#グリッパーセットボタン用の小さなフォントを作成します。 helv6 =tkFont.Font(family ='Helvetica'、size =6、weight ='normal')self.frame =Frame(self.master)self.frame.pack()self.f1 =Frame(self.frame)self .l1 =ラベル(self.f1、text ="Comm Port:")self.l1.pack(side =LEFT)self.comm_entry =Entry(self.f1、bd =5、name ="comm_entry")self.comm_entry .pack(side =LEFT)self.connectButton =Button(self.f1、text ="Connect"、command =self.SerialConnect、name ="b_connect")self.connectButton.pack(side =LEFT)self.disconnectButton =Button (self.f1、text ="Disconnect"、command =self.SerialDisconnect、name ="b_disconnect")self.disconnectButton.pack(side =RIGHT)self.f1.grid(row =0、column =0)self.f2 =LabelFrame(self.frame、bd =3、relief ="groove"、 text ="Ground Control")self.g_vert_fm =Frame(self.f2)self.grip_vert =Scale(self.g_vert_fm、from_ =0、to =180)self.grip_vert.grid(row =0、column =0、rowspan =4、sticky =W)self.grip_vert_set =Button(self.g_vert_fm、text ="Set"、command =self.GripperY、name ="b_grip_vert_set"、width =1、height =2、font =helv6)self.grip_vert_set .grid(行=5、列=0、スティッキー=W)self.master.bind( ""、self.GripperY)self.g_vert_fm.grid(行=0、列=0、行スパン=4、スティッキー=W) self.leftforwardButton =Button(self.f2、text ="\\"、command =self.TurnLeft45、name ="b_left_forward")self.leftforwardButton.grid(row =0、column =1)self.master.bind( "  "、self.TurnLeft45) self.leftButton =Button(self.f2、text ="<"、command =self.TurnLeft、name ="b_left")self.leftButton.grid(row =1、column =1)self.master.bind( "  "、self.TurnLeft)self.rightforwardButton =Button(self.f2、text =" / "、command =self.TurnRight45、name =" b_right_forward ")self.rightforwardButton.grid (行=0、列=3)self.master.bind( "
 "、self.TurnRight45)self.haltButton =Button(self.f2、text ="Halt!" 、command =self.Halt、name ="b_halt")self.haltButton.grid(row =1、column =2)self.master.bind( "
 "、self。停止)self.rightButton =Button(self.f2、text =">"、command =self.TurnRight、name ="b_right")self.rightButton.grid(row =1、column =3)self.master.bind( 「  "、self.TurnRight)self.upButton =Button(self.f2、text =" ^ "、command =self.Forward、name =" b_forward ")self.upButton.grid(row =0、列=2)self.master.bind( "
 "、self.Forward)self.leftdownButton =Button(self.f2、text ="/"、command =self.TurnRight45、name ="b_left_down")self.leftdownButton.grid(row =2、column =1)self.downButton =Button(self.f2、text ="V"、command =self.Reverse、name ="b_reverse ")self.downButton.grid(row =2、column =2)self.master.bind(" 
  "、self.Reverse)self.f2.grid(row =1 、column =0、pady =25)self.rightdownButton =Button(self.f2、text ="\\"、command =self.TurnLeft45、name ="b_right_down")self。 rightdownButton.grid(行=2、列=3)self.g_horz_fm =フレーム(self.f2)self.grip_horz =スケール(self.g_horz_fm、from_ =0、to =180、orient =HORIZONTAL)self.grip_horz.grid(行=0、列=0、列スパン=7、スティッキー=E)self.grip_horz_set =ボタン(self.g_horz_fm、text ="Set"、command =self.GripperX、name ="b_grip_horz_set"、width =1、height =2、font =helv6)self.grip_horz_set.grid(行=0、列=8)self.master.bind( ""、self.GripperX)self.g_horz_fm.grid(行=4、列=0、 columnspan =7、sticky =E)self.master.bind( " 
  "、self.GripperHome)self.f3 =フレーム(self.frame) self.l2 =ラベル(self.f3、text ="最後のアクション:")self.l2.pack(side =LEFT)self.l3 =ラベル(self.f3、text =""、 textvariable =self.message)self.l3.pack(side =RIGHT)self.f3.grid(row =3、column =0、pady =8)#ボットコントロールボタンの状態を設定します。接続時に有効にします。#それ以外の場合は無効にします。 def CtrlButtonsState(self、bstate):self.leftforwardButton.config(state =bstate)self.leftButton.config(state =bstate)self.rightforwardButton.config(state =bstate)self.rightButton.config(state =bstate)self。 upButton.config(state =bstate)self.leftdownButton.config(state =bstate)self.downButton.config(state =bstate)self.rightdownButton.config(state =bstate)self.haltButton.config(state =bstate)self。 decodeButton.config(state =bstate)self.grip_horz.config(state =bstate)self.grip_vert.config(state =bstate)self.grip_horz_set.config(state =bstate)self.grip_vert_set.config(state =bstate)#設定通信ポートエントリの状態。接続されていない場合は有効、#ボットが接続されている場合は無効。 def ConnCtrlsState(self、bstate):self.connectButton.config(state =bstate)self.comm_entry.config(state =bstate)#通信入力フィールドに入力された通信ポートに接続します。 def SerialConnect(self):try:#ここでボーレートを変更します。異なる場合は9600 self.ser =serial.Serial(self.comm_entry.get()、9600)IOErrorを除く:tkMessageBox.showerror( "Invalid comm port"、 "通信ポートが見つかりません。 ")return self.ConnCtrlsState(DISABLED)self.CtrlButtonsState(NORMAL)self.message.set(" SerialConnect ")self.connected =True time.sleep(3)#接続が発生するまで少し待ちます#ボットから切断します(通信ポートを閉じます)。 def SerialDisconnect(self):try:#ボットがまだ動いている場合に備えて、Haltコマンドを送信します。 self.send_cmd( 'h'、 "Halt!")time.sleep(1)self.ser.close()ただしIOError:print "Could not close port ..." self.message.set( "SerialDisconnect")self .ConnCtrlsState(NORMAL)self.CtrlButtonsState(DISABLED)self.connected =False time.sleep(2)#切断が発生するまで少し待ちます#コマンドを開いている通信ポートに送信しますdef send_cmd(self、action、msg): if self.connected ==True:for val in action:self.ser.write(val)self.ser.flush()self.message.set(msg)#ボットに左折コマンドを送信します。 def TurnLeft(self、event =None):self.send_cmd( 'a'、 "Left")#ボットに左折コマンドを送信します。 def TurnLeft45(self、event =None):self.send_cmd( 'q'、 "Left45")#ボットに右折コマンドを送信します。 def TurnRight(self、event =None):self.send_cmd( 's'、 "Right")#ボットにターンライトアップコマンドを送信します。 def TurnRight45(self、event =None):self.send_cmd( 'e'、 "Right45")#ボットに転送コマンドを送信します。 def Forward(self、event =None):self.send_cmd( 'w'、 "Up")#ボットにReverseコマンドを送信します。 def Reverse(self、event =None):self.send_cmd( 'z'、 "Down")#ボットに停止コマンドを送信します。 def Halt(self、event =None):self.send_cmd( 'h'、 "Halt!")#グリッパー(X)を設定します。 def GripperX(self、event =None):#スライダーコントロールを読み取り、値をボットコントローラーに送信します#注:0は完全に閉じ、180は完全に開いていますgrp_change =( '>'、chr(self。 Grip_horz.get())、chr(255))self.send_cmd(grp_change、 "Gripper X")#グリッパーYを設定します。defGripperY(self、event =None):#スライダーコントロールを読み取り、値をボットコントローラー#注:0は一番上、180は一番下ですgrp_change =( '^'、chr(self.grip_vert.get())、chr(255))self.send_cmd(grp_change、 "Gripper Y ")#グリッパーを「ホーム」位置に設定します。 def GripperHome(self、event =None):self.send_cmd(( 'c'、chr(255))、 "Gripper Home")def __init __(self、master =None):Frame .__ init __(self、master)self。 pack()self.createWidgets()self.CtrlButtonsState(DISABLED)#GUIを起動して(Tk)、アプリのサイズとタイトルを指定しますwindowdef main():root =Tk()root.geometry( "450x350")root.wm_title( "Rover Control Center(RCC)")app =App(master =root)app.mainloop()if __name__ =='__ main __':main()
ローバーコード Arduino
 / * Bluetoothローバー。人生の目標...空中を魔法のように送られたあなたの命令に従います!またはUSBから:)ScottBeasley著-2015無料で使用または変更できます。お楽しみください。* // * L9110Sライブラリを使用します。 L9110Shブリッジで動作します。 https://github.com/jscottb/L9110Driverからダウンロードするか、https://github.comからzipを複製して、アーカイブファイル名から「-master」を削除し、ライブラリを追加します* /#include  #include  #define SERVO_Y 2 //ピングリッパーYサーボ#defineSERVO_CLAW 7 //ピングリッパーグリッパーservo#define pinAIN1 5 // I1インターフェイスを定義#definepinAIN2 6 // I2インターフェイスを定義#definepinBIN1 3 / / define I3 interface#define pinBIN2 11 // I4 interfaceを定義します//速度defines#define MAXFORWARDSPEED 225 //前進させたい最大速度#defineMAXBACKWARDSPEED 225 //最大逆速度#defineTOPSPEED 255 //オンを改善するために使用カーペットと粗い表面。//駆動とサーボに使用されるさまざまな時間遅延#defineTURNDELAY 475#define TURNDELAY45 235#define BACKUPDELAY 400#define SERVOMOVEDELAY 200#define SERVOSEARCHDELAY 85 / *グローバル領域。* ///モーター、サーボオブジェクトを作成します。 L9110_Motor motor_left(pinAIN1、pinAIN2);とインターフェースする//左モーターオブジェクトを作成しますL9110_Motormotor_right(pinBIN1、pinBIN2); //右モーターオブジェクトを作成しますServogrip_y_servo; //グリッパーY軸のサーボオブジェクトを作成しますServogrip_servo; //グリッパークローボイドセットアップ用のサーボオブジェクトを作成します(){// 9600 Serial.begin(9600);と異なる場合は、ここでボーレートを変更します。 Grip_y_servo.attach(SERVO_Y); //サーボを接続しますSERVO_LRgrip_y_servo.write(90); Grip_servo.attach(SERVO_CLAW); //サーボを接続しますSERVO_LRgrip_servo.write(90); delay(500);} void loop(){byte command =0、val =0; if(Serial.available()> 0){//着信コマンドを読み取るbyte command =Serial.read(); } switch(command){case'w ':go_forward(); //Serial.println( "Going Forward");壊す;ケース 'z':go_backward(); //Serial.println( "Going Backwards");壊す;ケース 'a':go_left();遅延(TURNDELAY);停止(); //Serial.println( "左に曲がる");壊す;ケース 's':go_right();遅延(TURNDELAY);停止(); //Serial.println( "右折");壊す;ケース 'q':go_left();遅延(TURNDELAY45);停止(); //Serial.println( "左に曲がる");壊す;ケース 'e':go_right();遅延(TURNDELAY45);停止(); //Serial.println( "右折");壊す;ケース 'h':停止(); //Serial.println( "Halting");壊す; case '>'://グリッパーX移動はサーボ設定値を送信しますval =Serial.read(); //値をセットアップの実際の移動制限に制限しますgrip_servo.write(constrain(val、64、179)); //Serial.println( "GripperX");壊す; case '^'://グリッパーY移動はサーボ設定値を送信しますval =Serial.read(); //値をセットアップの実際の移動制限に制限しますgrip_y_servo.write(constrain(val、53、179)); //Serial.println( "GripperY");壊す; case'c '://値をセットアップの実際の移動制限に制限しますgrip_y_servo.write(90); Grip_servo.write(90); //Serial.println( "GripperHome");壊す;ケース255://すべてのグリッパーコマンドの後に送信Serial.flush();壊す; } Serial.flush(); delay(125);} void go_forward(){// Serial.println( "Going forward ..."); //モーターをその速度まで傾斜させます。 // GMのramp_it(MAXFORWARDSPEED、FORWARD、FORWARD)で、一部のサーフェスとウェアおよび風袋でスピンアウトするのを支援します。 //ランプの最後のバットがすべてではなかった場合に備えて、//設定された速度のすべてに設定します。 motor_left.setSpeed(MAXFORWARDSPEED); motor_right.setSpeed(MAXFORWARDSPEED); motor_left.run(FORWARD | RELEASE); motor_right.run(FORWARD | RELEASE);} void go_backward(){// Serial.println( "Going back ..."); //モーターをその速度まで傾斜させます。 // GMのramp_it(MAXBACKWARDSPEED、BACKWARD、BACKWARD)で、一部のサーフェスとウェアおよび風袋でスピンアウトするのを支援します。 //ランプの最後のバットがすべてではなかった場合に備えて、//設定された速度のすべてに設定します。 motor_left.setSpeed(MAXBACKWARDSPEED); motor_right.setSpeed(MAXBACKWARDSPEED); motor_left.run(BACKWARD | RELEASE); motor_right.run(BACKWARD | RELEASE);} void go_left(){// Serial.println( "Going left ..."); //モーターをその速度まで傾斜させます。 // Help with spinning out on some surfaces and ware and tare on the GM's ramp_it (TOPSPEED, BACKWARD, FORWARD); // Set to all of the set speed just incase the ramp last vat was not all of // it. motor_left.setSpeed (TOPSPEED); motor_right.setSpeed (TOPSPEED); motor_left.run (BACKWARD|RELEASE); motor_right.run (FORWARD|RELEASE);}void go_right ( ){ //Serial.println ("Going right..."); // Ramp the motors up to the speed. // Help with spinning out on some surfaces and ware and tare on the GM's ramp_it (TOPSPEED, FORWARD, BACKWARD); // Set to all of the set speed just incase the ramp last vat was not all of // it. motor_left.setSpeed (TOPSPEED); motor_right.setSpeed (TOPSPEED); motor_left.run (FORWARD|RELEASE); motor_right.run (BACKWARD|RELEASE);}void halt ( ){ //Serial.println ("Halt!"); //ramp_it (0, BRAKE, BRAKE); motor_left.setSpeed (0); motor_right.setSpeed (0); motor_left.run (BRAKE); motor_right.run (BRAKE);}void ramp_it (uint8_t speed, uint8_t lf_dir, uint8_t rt_dir){ uint8_t ramp_val =0, step_val =0; step_val =abs (speed / 4); if (!speed) step_val =-step_val; for (uint8_t i =0; i <4; i++) { ramp_val +=step_val; motor_left.setSpeed (ramp_val); motor_right.setSpeed (ramp_val); motor_left.run (lf_dir|RELEASE); motor_right.run (rt_dir|RELEASE); delay (25); }} 
L9110 Driver
L9110 motor driver for Arduinohttps://github.com/jscottb/L9110Driver

カスタムパーツとエンクロージャー

4wdgripperbt2.fzz

回路図

4wdgripperbt2.fzz

製造プロセス

  1. マルチ温度センサー
  2. 862D +用のDIYはんだごて制御
  3. MotionSense
  4. 3Dプリンターの火災安全
  5. Arduinoの反発電磁浮上
  6. Arduino Powered Weather Balloon Datalogger
  7. ArduFarmBot-パート2:リモートステーションとIoTの実装
  8. マイクロコントローラーラボ
  9. CoroFence-熱検出器🖖
  10. クラウドモニタリング、リモートコントロールシステム
  11. リモート生産管理の5つの利点