GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
近藤科学のICSシリアルサーボの制御ができました。
・使用サーボ: 近藤科学 KRS-3301 ICS・ボーレート: 115200・接続ポート: Serial1 (1線UART設定)・ID: あらかじめICS USB Adapterで設定
去年のルネサスナイト11で発表した自作ライブラリに、1線UART設定のための1行を追加したのみです。
#ifdef GRROSE serial->direction(HALFDUPLEX);#endif
https://github.com/lipoyang/ICSlib
近藤科学からもArduino用ライブラリが公開されていますが、おそらく同様の変更で対応できるかと思います。
ツクモのロボット王国に、アタッチメントありました。しかし、正直な話、もう、お店の活気は、ホビーロボットは終わった感じしかしません(*´д`*)〜з
接続ケーブルが、長さに関係なく1本400円とか、高すぎますね。接続ケーブルを、自作する場合、サーボの電源もあるので、単芯ケーブルを3本、みつあみにするかんじが良いでしょうか? あと、コネクタのピンの信号割り当ては、どっかに図が落ちてるんでしょうか?
https://kondo-robot.com/w/wp-content/uploads/KRS-series_manual_Download-V1_3_a4.pdf これにピン配置が載ってました。
しかし、良く調べないで買いましたが、設定はPCからなんですね。もう、ちょっとめげました。GR-ROSEから、シリアルサーボに変えるプログラムを、どなたか作っていませんか?
有難うございます。私も、さっき、気が付きました(;^ω^) プルアップされてれば、シリアルモードになる訳ですね。
「これらのサーボを無限回転させるにはサーボマネージャにて設定を書き換える必要があります。『回転モード』にチェックを入れます。」と説明もありますね。GR-ROSEから、内蔵EPROMの書き換えは、なんか危険性が高い?
ツクモのロボット王国で、長さに関係なく、1本400円で、高いな~とか思いながら、3301用のケーブルを自作しましたが、細かくてしんどいですね。
シリアルサーボ3301ですが、ID書き換えとかで、DC5V電源でも動きますか? DC6VのACアダプタを買わないとダメかどうか?
情報、有難う御座います。「近藤科学ICS USB Adapterの代替」で、GR-ROSEをアダプタの代わりにすれば、いけますか?
有難うございます。今、試して、回転モードの設定も、GR-ROSE経由でできました。後は、動作テスト用に、DC6VのACアダプタを買ってこなければ、、、、
シリアルサーボの動作確認したいのですが、手っ取り早くするには、どいうバイト列を送れば良いんでしょうか?
下記は、公式サイトにあったサンプルプログラムの断片ですが、これをC言語で、まねてもうんともすんとも動いてないです(;^ω^)
Private Function SetPos(ByVal Id As Integer, ByVal Pos As Integer) As Integer
Dim Tx(3) As Byte 'unsigned char Tx[3] Dim Rx(6) As Byte 'unsigned char Rx[6](ループバックを含む) Dim Dat As Integer 'int Dat Dim Flag As Boolean = True '正しくデータが受け取れたかチェックするフラグ
Tx(0) = &H80 Or Id 'Tx[0] = 0x80 | id Tx(1) = Pos >> 7 And &H7F 'Tx[1] = (pos >> 7) & 0x7F Tx(2) = Pos And &H7F 'Tx[2] = pos & 0x7F
SerialPort1.DiscardInBuffer() 'いったんバッファをクリアする SerialPort1.DiscardOutBuffer()
SerialPort1.Write(Tx, 0, 3) 'Tx配列(ICSコマンド)をシリアルポートから出力する
下記では、何も動かなかったです。
char d[3];int pos = 100; d[0] = 0x01 | 0x80; d[1] = (pos >> 7 ) & 0x7f; d[2] = pos & 0x7f;for ( int i=0 ; i<3; i++ ) Serial1.write( d[i] ); Serial1.flush():
なんか読み間違えてますか?