Hatena::ブログ(Diary)

熊工房 ohgumaの腹凹ませたい日記

2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |

2017-04-13

[]LEDリング活用

Twitterに上げた動画がこれまで以上に反応があったのでまとめておく。

D

LEDリングの緑が赤外線ボールのある方向、赤がジャイロセンサによるセンター方向を指す。動画では見えないが、重なる場合は色を変えている。

LEDバー?はボール距離を指し、そばにあれば全点灯、離れるとだんだん消えていく。

赤外線ボールを見るセンサ(下の写真の黒い基板)はTSSP4038の出力をLPF(39KΩ,0.33uF)に通したもので、それを4つ使用し、それぞれ向きを90度ずらして配置し、ArdunoでAnalogRead()し、角度を計算で求める。

f:id:ohguma:20170414045445j:image:w360


動画使用してるLEDモジュールは以下の2つ。

twitterでは間違えて別のモジュールページを紹介していました)


WS2812とWS2812Bの違いはこちら。


このように数珠つなぎにすることで、Arduinoからは1本の信号線で両モジュール制御できる。

f:id:ohguma:20170411081117j:image:w360

f:id:ohguma:20170411081127j:image:w360

f:id:ohguma:20170414050107j:image:w360

Arduinoデジタルピン1つをリングのINへ、リングOUTをバーのINへ接続。ピン1つでリング24個、バー8個の計32個のLED制御する。


Arduinoならば adafruit の NeoPixelライブラリを使うと簡単制御できる。

使い方はサンプルを見れば分かる。


写真の後ろに写っているモジュールはこちら。これも数珠つなぎにできる。

スイッチサイエンスでは同様に使用できるテープのものも扱いがある。

またNeoPixelライブラリの使い方なども紹介されている。

2017-04-09

[]「ようこそジャパリパークへ」をシングルギヤボックスで鳴らしてみた

音量がすごく小さいので要注意。

D


構成の解説。

f:id:ohguma:20170409213201j:image:w360

スケッチはこちらに。


モーターを鳴らすスケッチは以下を参考に2つのモーターから同じ音がでるよう修正した。

元のスケッチでは duty比が50%あり、そのままだとモーターが回ってしまって音がほぼ聞こえないため、ONになる時間をモーターが回らないように、ごく短い時間になるよう修正した。

analogWrite()を使っておらず、328Pなどの他のArduinoのボードでも動くと思う。

2017-03-08

[]ロボットの三要素(SCA)「S(Sensor) センサ:感じて知らせる!」(その2)

C-Style上ではセンサ値を使った演算もできる。


あるセンサから別のセンサ値を引き算した結果が0より大きいか小さいかで、どちらのセンサが強く反応しているか判断もできる。

f:id:ohguma:20170309011231p:image

ここで、引き算の注意点。

変数Dのようにセンサ値どおしを直接引き算すると意図しない結果が出る。これは、C言語データ型の問題であるが、一旦センサ値を変数(A,B)に入れてから演算(C)することで回避できる。


また、前回ループ時の値を変数に保存しておき、今回の値から前回の値を引き算した結果から近づいたか、遠ざかったかなどの判断もできる。

f:id:ohguma:20170309005733p:image

(1行目のE=0はE=CN3とすべきかも)

これらを踏まえると、2つのセンサの値の差の前回ループの値を保存しておき、今回の2つのセンサ値の差との差を求めて、..などと様々な分析方法が考えられる。

数少ないセンサでも処理の仕方で様々な分析ができ、腕の見せ所と思う。

(つづく)

2017-03-07

[]ロボットの三要素(SCA)「S(Sensor) センサ:感じて知らせる!」

ダイセンのボールセンサのように状態(例:ボールまでの距離)に応じて出力される値が異なるセンサを使う場合、「しきい値」で状態判断できる。

f:id:ohguma:20170308081545p:image


先日の C-Style サンプルプログラムと同様にすると、次のように「ある」か「ない」かの判断になる。

f:id:ohguma:20170308081917p:image


しきい値」は1つである必要はない。

elseif と複数の「しきい値」を使うことで、「近い」「遠い」「ない」などの複数状態判断できる。

f:id:ohguma:20170308081916p:image

(つづく)

2017-03-05

[]ロボットの三要素の続き デバッグ

C-Styleでプログラム作成したら、実際にロボット動かして動作確認し、プログラムデバッグしていく。


ただし、動きからプログラム状態判断すると、勘違いも起こりやすく、LED表示を併用するにしても情報量が少ないので、確実にデバッグするには変数の値を実際に画面で確認するとよい。ロボットの3要素に分けてプログラムができていると、それぞれの要素ごとにデバッグができ、問題解決がしやすい。

デバッグの例がこちら。

f:id:ohguma:20170305064258p:image:w640

先日のプログラムに19〜24行をデバッグ用に追加した。デバッグプログラムはif文中に書くと作業が楽になる。

  • (19行目)if文の条件をC-Codeにし、C-CodeにTRUEを入力と常に条件成立し if 文内が実行される。デバッグを止めるときは C-Code をFALSE にすると常に条件成立せずに if 文内けで済む。また本番プログラムにする場合はこの行を削除するとif文内もまとめて削除できる。
  • 20行目)変数Aの値を「A:」に続けて出力し、その後半角スペースを出力する。
  • (21行目)変数Bの値を「B:」に続けて出力し、その後改行を出力する。
  • (22行目)変数表示が見やすくなるように待機(0.1秒)
  • 23行目)continue を実行すると以後の処理を無視して、4行目の無条件ループに戻る。この部分までのデバッグをする場合、以後の処理を無視できる。以後の部分も引き続きデバッグする場合は continue を削除する。

実際に変数の値を画面に表示するには、センサーモニターを開き、「センサモニタ&出力チェック」の部分(マウスカーソルがある辺り)をダブルクリックする。すると、センサモニタ画面の下部に表示エリアが追加される。この状態プログラムをスタートさせると、上の20,21行目の出力が次々に画面に表示される。

センサ値がいろいろ変わるようにロボットの周りの環境を変化させ、それぞれの状態場合変数値が意図する値になっているかどうか確認する。