2024年2月16日金曜日

読者の方々の声

本ページでは、読者の方々のレビューや利用例などをご紹介したいと思います。

レビュー


記事やブログなどでのご紹介



以下、twitterでの反応をまとめます。
























3 件のコメント:

  1. 補足情報でやっと、液晶表示できました。一週間なやみになやみました。このページが偶然 ヒットして救われました。

    返信削除
  2.  ラズベリーパイの入門書としてとてもわかりやすく、いろいろなことを学ばさせていただいています。ありがとうございます。教えていただきたいことがあるのですが、よろしくお願いします。

    「カラー図解 最新 Raspberry Piで学ぶ電子工作 作って動かしてしくみがわかる」のbb/08でファイルjavascript.jsの中に左右の車輪の速さの違いの補正という部分がありますが、これはどのようなことをしているのかもう少し詳しく教えてください。

    }else if(touch.pageX < mTouchOffsetLeft + 2*mTouchWidth/3){ // 前後移動
    // 左右の車輪の速さの違いの補正
    var modL = (1.2-0.8)*(touch.pageX - mTouchOffsetLeft - mTouchWidth/3)/(mTouchWidth/3) + 0.8;
    var modR = (0.8-1.2)*(touch.pageX - mTouchOffsetLeft - mTouchWidth/3)/(mTouchWidth/3) + 1.2;

    返信削除
    返信
    1. ご質問ありがとうございます。

      書いていただいた部分は、前進か後退かをキャタピラ式模型に指示する部分です。

      その場所から少し先に
      rate25Prev = modL;
      rate24Prev = 0;
      rate23Prev = modR;
      rate22Prev = 0;
      のような部分があります。

      ここの部分は、本来は前進だったら
      rate25Prev = 1;
      rate24Prev = 0;
      rate23Prev = 1;
      rate22Prev = 0;
      後退だったら
      rate25Prev = 0;
      rate24Prev = 1;
      rate23Prev = 0;
      rate22Prev = 1;
      という命令で良いはずです。

      ここから先は少し細かな話になりますが、
      モーターには個体差があり、モーターの回転速度が
      左右で微妙に異なることがあります。

      その場合、
      rate25Prev = 1;
      rate24Prev = 0;
      rate23Prev = 1;
      rate22Prev = 0;
      を指定しても、
      「まっすぐ進んで欲しいのに少し右(左)にそれる」
      ということが起こり得ます。

      そのため、タッチ領域の上下矢印エリア内で、
      「上下矢印エリアの左端」
      「上下矢印エリアの中央」
      「上下矢印エリアの右端」
      のどのあたりをタッチしたかで、
      左右の回転のモーターの回転速さの比が変わるようにしています。

      具体的に書きますと、下記のようになります。

      <上下矢印エリアの左端(touch.pageX = mTouchOffsetLeft + mTouchWidth/3 の時)>
      modL = 0.8
      modR = 1.0 (一旦1.2が計算され、その後1.0に切り捨てられる)
      となり、その結果
      rate25Prev = 0.8;
      rate24Prev = 0;
      rate23Prev = 1;
      rate22Prev = 0;
      右モーターを若干速く回すため、モーターの速さが揃っていれば左寄りに進むはず


      <上下矢印エリアの中央(touch.pageX = mTouchOffsetLeft + mTouchWidth/2 の時)>
      modL = 1.0
      modR = 1.0
      となり、その結果
      rate25Prev = 1;
      rate24Prev = 0;
      rate23Prev = 1;
      rate22Prev = 0;
      モーターの速さが揃っていればまっすぐ進むはず


      <上下矢印エリアの右端(touch.pageX = mTouchOffsetLeft + 2*mTouchWidth/3 の時)>
      modL = 1.0 (一旦1.2が計算され、その後1.0に切り捨てられる)
      modR = 0.8
      となり、その結果
      rate25Prev = 1;
      rate24Prev = 0;
      rate23Prev = 0.8;
      rate22Prev = 0;
      左モーターを若干速く回すため、モーターの速さが揃っていれば右寄りに進むはず


      このように、タッチ位置で左右モーターの回転速度に差をつけることで、
      左右のモーターに個体差があっても、上下矢印エリアの左端~右端のどこかで
      キャタピラ式模型がまっすぐに進む場所があることを狙っています。

      以上の解説でいかがでしょうか。

      削除