かっぱの覚え書き

とりあえずなんかメモ書きとか

ディケイドカードの読み取り方法

ネオディケイドライバー、ネオディエンドライバー、バーコードを読み取る玩具(私が知ってるのはテンソウダーとブレイドの武器系)を作るにあたってまずはバーコードの識別方法、arduinoでの読み取り方を解説します。

まずはバーコード読み取り機の説明です。

f:id:une-lettre-arrive:20190829001112j:plain

f:id:une-lettre-arrive:20190829001138j:plain


この読み取り機はフォトリフレクタという部品が2個ついています。
フォトリフレクタとは光を出す、光を読み出す2つの部品で構成されており光が当たった場所の反射率を数値化するというものです。
白は数値が低く、黒は数値が高くなります。
例えば90以下は白、それ以上は黒と線引きして判別しているというわけです。


次にバーコードについて説明します。
キバのカードです。

f:id:une-lettre-arrive:20190829001216j:plain


このバーコードは黒が1、白が0となっており上段がデータ、下段がクロックとなります。
まずはデータ部分ですが2進数で識別の数値が書かれています。
ディケイドライバーの場合はカードの読み取り方向、右から左に読みます。
このカードだと10101101101となります。
ただこのままフォトリフレクタで読み取るとバーコードの幅までは識別できないので101010101と読み取ってしまいます。
それを防ぐ為に使用するのが等間隔に並んでいる下段のクロックです。
クロックの色が切り替わった時、上のデータは白か黒かを判断し、
画像でいうと赤い線のタイミングでデータ部を読み取っています。
こうする事によって同じ色が並んでいようが正確に読み取れるというわけです。

f:id:une-lettre-arrive:20190829001031j:plain


これらを理解するのに以下のサイトを参考にさせていただきました。

自動走行ロボットカー(ライントレースカー) [Arduino]
https://www.petitmonte.com/robot/line_trace_car.html
フォトリフレクタの使い方 [Arduino]
https://www.petitmonte.com/robot/howto_photo_reflector.html
名張市つつじが丘おもちゃ病院
http://tutujith.blog.fc2.com/blog-entry-36.html
じむの(とりあえず)やってみたの巻
http://rdstyle.cocolog-nifty.com/gm/2014/04/post-931a.html
Life with IT
https://l-w-i.net/t/arduino/sensor_003.txt