2007年1月アーカイブ

PICでのタイム計測4

前回までの作業失敗の原因を探るべくネットで色々探していたら、俺が作ろうとしてた物とほとんど同じ物を既に作っている人がいた(「Race Counter」のところ)。PCとの接続にUSBのゲームパッドを使ってるところまで同じだ。俺が考え付くような事は既に誰かが実践済みって事か。

……38KHzで信号を変調するのは良さそうだな。……リーダ部とID部を送信するのも良さそうだ。……あれー?俺の考え方や作り方と同じように見える。なぜ俺のはうまくいかないんだろうか?「たまにカウントもれがある」らしいけどその前に認識しないってのは俺の作りが駄目なのか?

んあー。「1ビットの長さは600μ秒」ってなってるな。俺はとりあえず「38KHzで10周期」としたから260μ秒か。ここかな?600μ秒=0.6ミリ秒くらいの長さにしないと認識できないのかもしれない。

よし。次はそのあたりを試してみよう。

PICでのタイム計測3

前回の考え方でプログラムしてみる。
結果は失敗。

一応、出力波形は期待通り出てるようだ。
ID01

波形の一部を拡大するとこうなる。
ID01の拡大

汚いプログラムなので恥ずかしいが、せっかくなので公開。PIC12C509A用asmファイル。

なぜ動かないのか?基本のところでどこか勘違いしてるとかかなぁ?

IE7

これは本気かね?
IE7アップグレードのすすめ

Google向けに最適化?

そんな事より「今すぐダ_ウンロード」のボタンが俺を不安にするんだが。

PICでのタイム計測2

前回作った、ID識別なしの赤外線信号

High  +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
      | | | | | | | | | | | | | | | | | |
Low  -+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-
   → |   |←約38KHz=約26μsec

1周期約26μsec=約38KHz。
38KHz


Ir Hack」の「赤外線リモコンの理解する」や「PICを始めよう」の「赤外線で通信してみる」を参考にして自分なりに曲解してみた。
赤外線で信号をやり取りする為に符号化が必要なので以下のように決めた。


信号の"0"を表す為に↓のように符号化。

High  +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
      | | | | | | | | | | | | | | | | | | | |
Low  -+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+---+---+---+---+---+---+---+---+---+---+
      |                   10                  |                   10                  |

簡単に表す為に書き直すと↓。
High  ||||||||||
Low  -++++++++++----------+
      |   10   |    10    |

さらに簡単に書き直すと↓。
High  +-+
      | |
Low  -+ +-+


同様に信号の"1"を表す為に↓のように符号化。

High  +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+                                                                                 
      | | | | | | | | | | | | | | | | | | | |
Low  -+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
      |                   10                  |                                       20                                      |

簡単に表す為に書き直すと↓。
High  ||||||||||
Low  -++++++++++--------------------+
      |   10   |         20         |

さらに簡単に書き直すと↓。
High  +-+
      | |
Low  -+ +-+-+

この"0"と"1"を組み合わせて信号を作る。


で、データフォーマットを勝手に決める。

High  +-+-+ +                                       +-+
      |   | |///////////////////////////////////////| |
Low  -+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+
      |     |                   |                   |         |
         ↑           ↑                  ↑             ↑
       リーダ       コード           コードの反転     トレーラ

※リーダは"HHL"とする。
※コードは4ビットとする。
※トレーラは"HLLLL"とする。


コードの部分にID番号を入れる事にする。ID1(0001)の場合↓。

High  +-+-+ +-+ +-+ +-+ +-+   +-+   +-+   +-+   +-+ +-+
      |   | | | | | | | | |   | |   | |   | |   | | | |
Low  -+   +-+ +-+ +-+ +-+ +-+-+ +-+-+ +-+-+ +-+-+ +-+ +-+-+-+-+
      |     |                 |                     |         |
         ↑           ↑                  ↑             ↑
       リーダ    コード(0001)     コードの反転(1110)  トレーラ

ID2(0010)の場合↓。
High  +-+-+ +-+ +-+ +-+   +-+ +-+   +-+   +-+ +-+   +-+
      |   | | | | | | |   | | | |   | |   | | | |   | |
Low  -+   +-+ +-+ +-+ +-+-+ +-+ +-+-+ +-+-+ +-+ +-+-+ +-+-+-+-+
      |     |                 |                     |         |
         ↑           ↑                  ↑             ↑
       リーダ    コード(0010)     コードの反転(1101)  トレーラ

ID3(0011)の場合↓。
High  +-+-+ +-+ +-+ +-+   +-+   +-+   +-+   +-+ +-+ +-+
      |   | | | | | | |   | |   | |   | |   | | | | | |
Low  -+   +-+ +-+ +-+ +-+-+ +-+-+ +-+-+ +-+-+ +-+ +-+ +-+-+-+-+
      |     |                   |                   |         |
         ↑           ↑                  ↑             ↑
       リーダ    コード(0011)     コードの反転(1100)  トレーラ

送信側は以上。


受信側はHighを受信するまで待って、Highを受けたら上記の順でHigh/Lowが繰り返されればOKと考える。
この考え方でPICを作ってみる。

PICでのタイム計測

以前これこれでPICをいじってたのはラジコンのタイム計測がやりたかったから。
要するに測るんジャーもどきを自分で作ってみようって事。

今のところ、ラジコンに赤外線送信機を載せて、赤外線受信機をPCのUSB接続のゲームパッドに接続し、ラジコンが通ったら(赤外線を受信したら)ボタンを押すのと同じ信号を出して、PC側で作ったプログラムで時間を測る。というところまでできた。
USBゲームパッドの応答時間やプログラム側の時間計測の精度など多少不安だが、別に1/100秒を競うわけでもないし今はこれでよしとする。

ただしこれだと原理的に1台分しか計測できない事になる(どんな信号であれ赤外線を受信した時点で計測対象としてしまう)。なので送信機側にIDを持たせるなどしてそれを赤外線で送らないと複数台の計測ができない。

PICで赤外線通信を試してるWebサイトがいくつか見つかったので、それを参考に考えてみようと思う。

新語?

「シェンダリング」って「シェーディング」と「レンダリング」を混同した勘違いって事で合ってるよね?
初めて聞いたときツボにはまって死ぬほど笑ったよ。

あと、Windows2000をWin2Kって書いて「うぃん・にけー」って読まれると「うぃん・けらいの」とか「うぃん・あえろー」とか「うぃん・おきゅぺて」とか「うぃん・ヴぁるきり」とかを合体させて作るのか?と思ってしまうのは俺だけか。

GEARS OF WAR

昨日(2007/01/18)、ヨドバシにXBOX360用ゲームのGearsOfWarを買いに行った。もう夕方だったけどXBOX360のゲームなんて売り切れるわけないだろと思ってた。
あれ?棚に置いてないよ?あーGOWはCEROレーティングでZだから18歳以上対象なのね。レジで言えと。でもデッドライジングとかお姉チャンバラXは棚に置いてあるなぁ。まあいい。

レジにて。俺「GOW下さい」店員「申し訳ありませんが朝売り切れました」

……そうだよな。俺が発売日に買いに来る位だから他のXBOX360ユーザが見逃すわけがないよな。俺のミスだ。

それにしても店員の「『朝』売り切れました」が気になる。別に朝だろうが昼だろうが「売り切れ」の事実を伝えれば事足りるのにわざわざ「朝売り切れた」と。
これは「夕方の忙しいときにのこのこ来やがってゲーオタなら開店と同時に買いに来やがれむしろ開店前に列を成すくらいの勢いでなきゃGOWなんて買えるわけねーだろ帰って泣きながらネット通販で探しなそれとも大量に残ってるPS3でも買ってくか?2個買って暖房用と筋トレ用にしな」とかいう意味だろうか?たぶん違う。

そして今日。他の店でGOW入手。さっそくプレイ。3D酔い。やっぱ俺はこういうゲーム無理な体質なんだろうか。

そんな単語は存在するのだろうか

電車なんかに乗ってて寝てしまい、うっかり降りるべき駅を過ぎてしまったとき「寝過ごした」と言うが。
ハッと目が覚めたらドアが開いてて「しまった寝過ごした」と思い込んでしまい慌てて降りてみると目的の駅より前の駅だった場合は何と言えばいいのか。

「寝過ぎた」の反対なわけだから「寝不足」?おかしい。
「寝」の部分を反対にして「起き過ぎ」?おかしい。

「寝過ごし」の反対という考え方に無理があるのか?うーん。

シュバルリッツ・ロンゲーナ大佐?

つまらん。許して。

死ぬがよい
はてなにキーワードがあった。

PICプログラミングやったり真女神転生3をやり始めたり地球防衛軍3をやり始めたり時間足りNEEE!

2014年7月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

このアーカイブについて

このページには、2007年1月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2006年12月です。

次のアーカイブは2007年2月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アマゾン検索

アーカイブ

Powered by Movable Type 4.21-ja