ytoi / ev3rt_aspsim_raspi_linux

2 stars 0 forks source link

ev3_motor_set_power()に定数を設定すると動かない #7

Closed karubehub closed 2 years ago

karubehub commented 2 years ago

既知の情報であれば、申し訳ありません。 ev3_motor_set_power()にパワーを定数で設定すると動きません。

sensor_testプログラムでは、これを回避するために、

while(1){ i++; ev3_motor_set_power(EV3_PORT_B,50+i%5); } などと記述されています。

karubehub commented 2 years ago

定数が原因ではないようです。 ev3_motor_config() を実行した後に、 すぐに、ev3_motor_set_power() や、ev3_motor_steer()を実行しても、 動き出さないという症状のようです。

ev3_motor_config()を実行した後に、 tslp_tsk(100*1000U); などと、100ミリ秒Sleepさせた後であれば、 パワーに、定数を設定しても、動作することを確認しました。

ev3_motor_steer() も同様でした。

sample_00_spike.zip

ytoi commented 2 years ago

確認しました。 確かにmotorが反応しませんね。spike側ではコマンドを受け付けて、pwmの設定はしているようなので、spike側の問題のような気がします。もう少し確認します。

ytoi commented 2 years ago

わかりました。初期のコマンド送信で、モーター設定後すぐにmotor.float()が呼ばれるため、止まっていました。 これはraspi側の内部データを-1で初期化するようにしたため、最初のモータ操作時にstopを示すデータを0に初期化した際に、そのコマンドがSPIKE側に伝わり、float()が呼ばれていました。-1初期化は0を示すデータが送られないことを解決するために途中から入れたのですが、その後それが不要なようにしたので、-1初期化をやめて0初期化にすることでstopのコマンドが送られないようにします。

karubehub commented 2 years ago

ev3_motor_set_power() や、ev3_motor_steer() のパワー値に、定数を設定した時に、動作することを確認しました。