(投稿前に、内容をプレビューして確認できます)

無題

  • ゆうき
  • 2017/01/23 (Mon) 13:48:25
作っていただいたサンプルプログラムを参考に
kinex!(システム:ipaddress)connect。
タイマー!作る 1 回数 「」実行 待つ。
システム!"arduino"使う。
a=arduino!作る。
a!(システム!シリアルポート選択)ひらけごま。
sw11=a!8 デジタル出力。
sw12=a!6 デジタル出力。
sw13=a!10 デジタル出力。
sw14=a!5 デジタル出力。


 ret=kinex !get。
 「ret!=undef」!なら「 
  「((ret:wristleft_y)-(ret:wristright_y))>20」!なら「
    sw11! 1 書く。
    sw13! 0 書く。
  」そうでなければ「((ret:wristright_y)-(ret:wristleft_y))>20」なら「
    sw11! 0 書く。
    sw13! 1 書く。
  」そうでなければ「((ret:wristright_y)>(ret:head))」なら「
    sw11! 0 書く。
    sw13! 0 書く。
」そうでなければ「((ret:wristleft_y)>(ret:head))」なら「
sw11! 1 書く。
sw13! 1 書く。
」そうでなければ「((ret:wristleft_y)<(ret:hipcenter))」なら「
sw12! 1 書く。
sw14! 1 書く。
  」実行。
 」実行。  
 arduino! 1 待つ。
 
」! 1000 繰り返す。

a! とじろごま。
というプログラムを作ったのですがモーターが動きませんでした。
また、サンプルプログラムを実行してみたところ前進し続けてしまいました。

Re: 無題

  • ゆうき
  • 2017/01/24 (Tue) 15:32:34
前進をさせているところを右回りの命令に変えてみたところ右回りの動きをしたのでKinectからのデータを読み取れていないのではないかと思ったのですが改善策はありませんか。

音楽機能で出力されるMIDIメッセージについて

  • mugen
  • 2017/01/22 (Sun) 16:35:48
メロディ!演奏。で出力されるMIDIメッセージをモニタリングしてみると、NoteOnメッセージの後にCC#127(Poly Operation)というコントロールチェンジメッセージが出力されているのですが、これは機能上必要な実装でしょうか?

Re: 音楽機能で出力されるMIDIメッセージについて

  • kanemune
  • 2017/01/23 (Mon) 14:37:13
以前のことで詳細は不明ですが、おそらく意図して出しているものではないと思います。

Bit Arrow の "文字列"! 実行 について

  • mugen
  • 2017/01/20 (Fri) 09:35:23
"かめた=タートル!作る 100歩 歩く。" ! 実行。

上記のような記述が「実行 is not a function」というエラーになります。
Bit Arrow では "文字列"!実行 の構文は使えませんか?

Re: Bit Arrow の

  • honda
  • 2017/01/23 (Mon) 02:19:02
ご意見をいただき、ありがとうございます。
検討させていただきます。

Re: Bit Arrow の

  • mugen
  • 2017/01/22 (Sun) 16:10:38
マニュアル(BitArrow版)の文字列のろころを見ると使用できそうに思えるので、修正等をお願いします。
"文字列"!実行。はとても便利な機能なので、可能であれば是非とも実装してください。

Re: Bit Arrow の

  • honda
  • 2017/01/20 (Fri) 17:22:07
申し訳ありません。
現在Bit Arrow版ドリトルでは、
"文字列"!実行。というプログラムは使用できません。

タートルグラフィックの色について

  • mugen
  • 2017/01/20 (Fri) 19:12:29
turtle! create (赤) linecolor (200) forward (青) linecolor (200) forward.

上記を実行するとBitArrow版では赤と青の線が描けるのですが、インストール版では全部が青になってしまいます。
インストール版で色を変化させながらタートルを動かすにはどのような書き方をすれば良いでしょうか?

Re: タートルグラフィックの色について

  • honda
  • 2017/01/20 (Fri) 19:28:24
インストール版でのlinecolor(線の色)命令は、実行しているタートルオブジェクトが書いた全ての線の色を変更します。
そのため、赤で書いた線も、「turtle!(青)linecolor」の時点で青色に変更されてしまいます。

今回の例ですと、以下のように赤で線を書いたあとに図形オブジェクトを生成すると色を変化させながら線を引くことができます。
------------------------
かめた=タートル!作る。
かめた!(赤)線の色 200 歩く 図形を作る。
かめた!(青)線の色 200 歩く。
------------------------

Bit Arrow の部分文字列(substr)について

  • mugen
  • 2017/01/20 (Fri) 17:45:45
ラベル!("私はかめたです"!3 5 部分)作る。

上記をBitArrowで実行すると結果が「かめた」になります。
仕様では「m n 部分」でm文字目からn文字を取り出すようになっていますが、m文字目からn文字目までを取り出しているようです。

Re: Bit Arrow の部分文字列(substr)について

  • honda
  • 2017/01/20 (Fri) 19:23:54
異なる動作を確認いたしました。
ご指摘いただきありがとうございます。

ドリトルとArduinoの無線通信について

  • ゆうき
  • 2017/01/12 (Thu) 15:13:52
ドリトルをもちいてArduinoをZigbeeやBluetoothなどの無線モジュールを使い制御することはできますか?

Re: ドリトルとArduinoの無線通信について

  • きつね
  • 2017/01/15 (Sun) 15:04:56
ZigbeeやBluetoothとも、以下の条件を満たせば利用可能なはずです。
・Zigbee:トランスペアレント・モード(透過モード)を持つモジュール
・Bluetooth:Serial Port Profile (SPP: シリアル ポート プロファイル) に対応したモジュール

ただし、ArduinoがUSB接続されていると問題が起こる可能性が高いので、上記を利用するときは、必ず、USBケーブルを抜いてください。
(USB接続で通信しているデータを受信する端子と、上記を利用するときにデータを受信する端子が同じなため、信号が混信してしまう恐れがあります)


なお、上記モジュールのドライバなどをPCにインストールすると、仮想シリアルポートが追加されます。(接続した機器と通信するための「COM*」の項目が追加される)
これを実行時に選択すれば、USB接続して制御していたときと同様に利用できるはずです。

教材用計測・制御基板の接続について

  • ao
  • 2017/01/12 (Thu) 16:55:29
現在の中学校に転任してきて、前任校で使っていたものと同じ「教材用計測・制御基板」を購入してもらい、コンピュータ室のパソコンに接続させたのですが、「エラーがあります。”計測”オブジェクトが作られていません(”実行”)」と表示されてしまいます。
新たに購入してもらった「教材用計測・制御基板」を、ためしに前任校のコンピュータ室のパソコンに接続してみたところ、正常に作動しましたので、基板には問題はないです。
なお、実行させようとしているプログラムは、
 計測!実行。
 comポート!”com4”書く
で始まり、LEDを点滅させるものです。
また、ドリトルのバージョンは、前任校も現在校も、V2.1です。
原因について、考えられることを教えていただければ幸いです。

Re: 教材用計測・制御基板の接続について

  • kanemune
  • 2017/01/12 (Thu) 17:59:01
ご質問ありがとうございます。

お使いの教材の型番やメーカー名を教えていただけると助かります。

com4が開けないということで、次のような可能性があると思います。COMPポートが存在していることを、Windowsのデバイスマネージャで確認してみてはいかがでしょう。
・教材のデバイスドライバがインストールされていない。
・ポート番号がcom4以外に変わっている。

もし解決が進まないようでしたら、メールでやり取りしたほうが早いかもしれません。kanemune@gmail.comまでご連絡ください。(←「@」を「@」にして送信してください)
よろしくお願いします。

無題

  • ゆうき
  • 2017/01/04 (Wed) 16:04:47
kinex!(システム:ipaddress)connect。
タイマー!作る 1 回数 「」実行 待つ。
システム!"arduino"使う。
a=arduino!作る。
a!(システム!シリアルポート選択)ひらけごま。
sw11=a!8 デジタル出力。
sw12=a!6 デジタル出力。
sw13=a!10 デジタル出力。
sw14=a!5 デジタル出力。


ret=kinex !get。
「((ret:wristleft_y)-(ret:wristright_y))>20」!なら「
   sw11! 1 書く。
   sw13! 0 書く。
」そうでなければ「((ret:wristright_y)-(ret:wristleft_y))>20」なら「
   sw11! 0 書く。
   sw13! 1 書く。
」そうでなければ「
sw11! 1 書く。
sw13! 1 書く。
」実行。

arduino! 1 待つ。

」! 1000 繰り返す。

a! とじろごま。

としたところ

"wristleft_y"オブジェクトがつくられていません(”sub”)というエラーがでてしまいました。

Re: 無題

  • ゆうき
  • 2017/01/08 (Sun) 01:05:43
ご返答ありがとうございます!
実行してみます!

Re: 無題

  • honda
  • 2017/01/04 (Wed) 19:52:18
すみません、先日のプログラムは不完全だったようです。
http://dolittle.eplang.jp/index.php?KineX
上記のページに載っている通り、
ドリトルでは、Kinectからデータを受け取る(kinex!get。)際に、
人を認識できなかった場合は未定義(undef)オブジェクトが返ってくるようです。
そのため、「未定義のオブジェクト同士では引き算ができない」とエラーが出ていたようです。

プログラムを以下のように変更する必要があるようです。
------------------
kinex!(システム:ipaddress)connect。
タイマー!作る 1 回数 「」実行 待つ。
システム!"arduino"使う。
a=arduino!作る。
a!(システム!シリアルポート選択)ひらけごま。
sw11=a!8 デジタル出力。
sw12=a!6 デジタル出力。
sw13=a!10 デジタル出力。
sw14=a!5 デジタル出力。


 ret=kinex !get。
 「ret!=undef」!なら「 //←追加分
  「((ret:wristleft_y)-(ret:wristright_y))>20」!なら「
    sw11! 1 書く。
    sw13! 0 書く。
  」そうでなければ「((ret:wristright_y)-(ret:wristleft_y))>20」なら「
    sw11! 0 書く。
    sw13! 1 書く。
  」そうでなければ「
    sw11! 1 書く。
    sw13! 1 書く。
  」実行。
 」実行。 //←追加分 
 arduino! 1 待つ。
 
」! 1000 繰り返す。

a! とじろごま。
------------------

kinectを用いたマイコンカーについて

  • ゆうき
  • 2016/12/15 (Thu) 14:53:21
kinex!(システム:ipaddress)connect。
タイマー!作る 1 回数 「」実行 待つ。
システム!"arduino"使う。
a=arduino!作る。
a!(システム!シリアルポート選択)ひらけごま。
sw11=a!8 デジタル出力。
sw12=a!6 デジタル出力。
sw13=a!10 デジタル出力。
sw14=a!5 デジタル出力。


ret=kinex !get。
「(ret:wristleft_y)>((ret:wristright_y))」!なら「
  sw11! 1 書く。
  sw13! 0 書く。
」そうでなければ「
  sw11! 0 書く。
  sw13! 1 書く。
」実行。

arduino! 1 待つ。 
」! 1000 繰り返す。

a! とじろごま。
というプログラムで制御したところ左手首が右手首よりあがったときは左側のモーターが動くのですが、右側のモーターは実行と同時に動いてしまいます。
どうすれば改善できるでしょうか。
また、複数の条件文をいれると実行が失敗してしまいます。

Re: kinectを用いたマイコンカーについて

  • ゆうき
  • 2016/12/26 (Mon) 12:02:35
"wristleft_y"オブジェクトがつくられていません(”sub”)というエラーがでてしまいました。

Re: kinectを用いたマイコンカーについて

  • honda
  • 2016/12/15 (Thu) 15:30:07
恐らく、条件分岐の部分を「左手首と右手首の高さが近い場合は直進する」というようにするとそれらしくなるでしょうか。
以下のプログラムは、
・左手首のy座標が右手首のy座標より20以上高い場合は左タイヤが回る
・右手首のy座標が左手首のy座標より20以上高い場合は右タイヤが回る
・そうでない場合(y座標の差がほとんど無い)は両タイヤが回る
というプログラムです。
参考にして下さい。

-------------------------------------------
kinex!(システム:ipaddress)connect。
タイマー!作る 1 回数 「」実行 待つ。
システム!"arduino"使う。
a=arduino!作る。
a!(システム!シリアルポート選択)ひらけごま。
sw11=a!8 デジタル出力。
sw12=a!6 デジタル出力。
sw13=a!10 デジタル出力。
sw14=a!5 デジタル出力。


ret=kinex !get。
「((ret:wristleft_y)-(ret:wristright_y))>20」!なら「
   sw11! 1 書く。
   sw13! 0 書く。
」そうでなければ「((ret:wristright_y)-(ret:wristleft_y))>20」なら「
   sw11! 0 書く。
   sw13! 1 書く。
」そうでなければ「
sw11! 1 書く。
sw13! 1 書く。
」実行。

arduino! 1 待つ。

」! 1000 繰り返す。

a! とじろごま。
-------------------------------------------

無題

  • S
  • 2016/12/11 (Sun) 21:33:06
ボタンを押したらタイマーオブジェクトが実行されるようにしたいのですがどうすればいいのでしょうか

Re: 無題

  • S
  • 2016/12/11 (Sun) 22:00:11
無事実行することができました。
ありがとうございます。

Re: 無題

  • honda
  • 2016/12/11 (Sun) 21:52:06
ドリトルのタイマーオブジェクトは、【実行】という命令をしたタイミングで実行が開始されます。

そのため、ボタンオブジェクトの【動作】にタイマーオブジェクトを実行する命令を記述することで、
ボタンが押された時にタイマーオブジェクトの実行が開始されるようにすることができます。

書き方は、以下を参考にしてください。
----------------------
かめた=タートル!作る。
時計=タイマー!作る。

開始ボタン=ボタン!"開始"作る。
開始ボタン:動作=「
  時計!「かめた!5 歩く」実行。
」。
----------------------