tag:blogger.com,1999:blog-8653984583714281630.post2308541537732868140..comments2012-07-02T10:18:35.885+09:00Comments on 建築農業工作ゼミ2009-2010: servoモータUnknownnoreply@blogger.comBlogger5125tag:blogger.com,1999:blog-8653984583714281630.post-51419219168153547352009-06-11T01:30:37.923+09:002009-06-11T01:30:37.923+09:00kousakuさんありがとうございます。
frameRate(30);
を追加したら、数字が変化した...kousakuさんありがとうございます。<br />frameRate(30);<br />を追加したら、数字が変化したらすぐに反応するようになりました。<br />講義のときに、正確が細かくなるといっていた意味が分かってきたような気がします。通信っていろいろルールがあって大変ですね。Lucellinohttps://www.blogger.com/profile/05115958259529383584noreply@blogger.comtag:blogger.com,1999:blog-8653984583714281630.post-67616493363128913652009-06-11T01:10:09.994+09:002009-06-11T01:10:09.994+09:00Arduinoの方の反応が遅いということは、バッファにProcessing側からのデータがたまってい...Arduinoの方の反応が遅いということは、バッファにProcessing側からのデータがたまっているということだと思います。ということは、Arduinoの速度よりもProcessingの送信速度の方が速いということかもしれません。<br />ひとつの解決方法としては、Processingの通信速度を少し遅らせるということになります。<br />例えばProcessingのvoid setup(){...}内に<br /><br />frameRate(30);<br /><br />を書き加えて、ループ速度(フレームレート)を毎秒30フレームに落としてトライしてみて下さい。<br />Arduinoは20ミリ秒のループなので毎秒50フレームになるはずです。非同期通信なので、データの送信側(Processing)が受信側(Arduino)より遅いほうが通信がうまくいくと思います。<br />そうでなければ同期通信にしてしまうかです。参考例は「Processing-Arduino シリアル通信4」<br />http://kousaku-kousaku.blogspot.com/2008/06/processing-arduino.html<br />にあります。 mirrornhttps://www.blogger.com/profile/05656300785699814814noreply@blogger.comtag:blogger.com,1999:blog-8653984583714281630.post-33731151910667374992009-06-11T00:36:24.872+09:002009-06-11T00:36:24.872+09:00kousakuさんアドバイスありがとうございます。
if(Serial.available()>...kousakuさんアドバイスありがとうございます。<br />if(Serial.available()>0){<br />val = Serial.read()*7;//シリアル通信<br />}<br />でやってみたのですが、あまり変化はなかったようです。数値を変化させない時のサーボの状態は、多少振動があるものなのでしょうか?<br />ブッブッブッとその場で振動しています。<br /><br />また、数値を変えた時にサーボが動き始めるのがすぐではなく、1秒くらいたってから反応する感じです。<br />これって、ちょっと遅いですよね?<br />今回やろうとしているのにはあまり反応速度は関係ないですけど、今後いろいろ問題になりそうですよね。Lucellinohttps://www.blogger.com/profile/05115958259529383584noreply@blogger.comtag:blogger.com,1999:blog-8653984583714281630.post-49534107073071740872009-06-10T23:50:38.663+09:002009-06-10T23:50:38.663+09:00実際にやってみると思うようにいかないものですね。
ここ数日はまってました。実際にやってみると思うようにいかないものですね。<br />ここ数日はまってました。tobiashttps://www.blogger.com/profile/03703120705780936358noreply@blogger.comtag:blogger.com,1999:blog-8653984583714281630.post-64293670878746608172009-06-10T22:02:32.975+09:002009-06-10T22:02:32.975+09:00niwaさんへ
サーボが振動してしまうのは、Arduino側のシリアル通信の部分かもしれません。A...niwaさんへ<br /><br />サーボが振動してしまうのは、Arduino側のシリアル通信の部分かもしれません。Arduinoのソース内の<br /><br />val = Serial.read()*7;//シリアル通信<br /><br />の部分を以下のように置き換えてみて下さい。<br /><br />if(Serial.available()>0){<br /> val = Serial.read()*7;//シリアル通信<br />}<br /><br />訂正前のソースは、非同期のシリアル通信なので、Arduino側はデータがまだ届いていなくてもSerial.read()でデータを読み込もうとしています。Arduinoは毎秒50回くらい読み込んでいますが、Processingの方はおそらくそれ以下の速度で送信してくるので、調整が必要になってきます。<br />訂正後は、Serial.available()を用いることで、Arduino側はProcessingからデータが送られてくる度に、データを読み込み、valに代入することになります。そうすることで、データが途切れないようになるので、動きも安定すると思います。試しにやってみて解消しなければ、また投稿/コメントして下さい。mirrornhttps://www.blogger.com/profile/05656300785699814814noreply@blogger.com