こんばんわ
明日から仕事だというのにこんな時間まで工作です。すごく前に作りかけていたロボット(?)の製作を再会しました。とにかく久しぶりすぎて、どの端末からどのプログラムをボードに書き込んでいたのかもわからず、今どんなプログラムが書き込まれているのかもわからず、結局基盤のパターンをにらめっこしながら、昔作ったサンプルプログラムをかき集めてきてもう一度作り直すハメになってしまいました。まあそうはいっても大したプログラムではないのでちょろちょろっと。。。行かなかったです!!
サーボの制御の部分がどうも怪しくて、なんか始めは10度ずつ増やしていくと140度くらいまできたところでボードがリセットしているような動きをします。150度くらいを指定したところでおかしくなるのかと思って、いきなり150度を指定すると別に問題なく指定できます。じゃあ120度くらいならいいのか?とおもって10度ずつふやして120度くらいまで増やしたら今度は10度ずつ減らすというプログラムにしたら一応上手く動きます。もしかして刻みが多すぎるのかと思って、45度なんかに指定してみたのですが、こんどは150度くらいまで増やしたところでリブートします。
これはちょっと難解だぞ。。。とか思ってじーーーーーーーっとソースをみていたのですが、
char msg1[17];
int servo1_pos = 45;
・
・
sprintf(msg1,"%s",servo1_pos);
・
・
とやっているところがあって、そこを
sprintf(msg1,"%3d",servo1_pos);
・
・
とやったら突然上手く動き出しました。
あれ?はじめの書き方はちょっとまずいですかね?久しぶりのプログラムなので良く覚えていません(笑)int を %s に渡すとどんな動きするんでしたっけ?ワーニングとか全くみていなかったのですが、もしかしたらワーニングが出ていたのかもしれません。そこで止まっていたわけではなく、その後でLCDに文字列を表示するようにしていたのですが、表示した時にリセットかかっていたようです。今まで真剣にやったことないのですが、デバッグとか真剣にやろうと思ったらどうやればいいんでしょ?今はシリアルモニタで頑張っていますが1行ずつ実行とか、エミューれたとか欲しいです。。
ちゃんと動かしていませんが、こんな感じで動きます。サーボでセンサーを動かしながら周りとの距離を確認するようにしたいと思っています。
さっき9Vの電池で動かそうと思ったらまたすっ飛んだ。。。今度はなんだ!?
0 件のコメント:
コメントを投稿