カタツムリ2010年01月24日

Newマリオ、世界累計1000万本

みなさん、おはようございます。

寒さも和らぎ、穏やかな一日になりそうですね~
休日出勤のみなさん、お勤めご苦労さまです。

任天堂のNewマリオ(Wii)が、
日本、米、欧、合わせて1000万本売れたそうです。
発売から3週間での記録は、過去最短(エンターブレイン)

これから新興国にも普及しはじめれば、
10年後に今の10倍ぐらい売れるソフトも、
出てくるかも知れませんね~

さて、その流れに乗るために必要になる経験は、
大ざっぱに、ネットワークの経験ですね。
つなげて、広がって、大きくなります。

自分のHPを作って情報発信すること、
ネットサーフィンで調べることでもOK!
少しでも多くネットワークを活用してみましょう!

今日は、先日のPICNICの入力ピン(RA0)に、
外から電圧をかけて、内部のA/D変換した値を、
UDP通信で取得して、その値を検証してみます。

1.RA0に電圧を掛ける。
2.A/D変換された値を、UDP通信で取得する。
実験結果で、1と2がしくなれば、動作検証完了です。

下の写真、赤(RA0)と黒(GND)のクリップに電圧をかけてみます。

NEC_0008.JPG

まず簡易な電圧をかける回路作ってみました。(下の写真)
電池5V -> 抵抗560Ωオーム -> LEDの順番で、
ブレッドボード上で繋ぎました。

LEDの両端に、緑と黄色の線を取り付けて、
ここから電圧を取り出して測定してみると、
1.822 V になります。
NEC_0007.JPG

この、1.822V の電圧を、
先ほどの赤と黒のクリップに繋いて、
RA0ピンにかけます。

そしてこの状態のとき、
PICNICからUDP通信で、RA0ピンの値を取り出してみましょう。

プログラムは手っ取り早く、
Perlで、Socket 関数を利用すれば、
こんな感じに数行で書けます。

※C言語でもOKです。DLLもこちらからダウンロード可能
※picnicsrc.lzh(45KB) 更新日:2000-NOV-24
※こちらを見れば、UDP通信のコマンドも分かります(※1)


#
# 通信ライブラリーを使う
#
use Socket;

#
# RA0 のピン番号を指定 0x81
#
$pin = 0x81;

#
# 3バイト、送信するパケットデーターを作る。
# コマンド(0x04) + ピン番号(0x81) + 終端データー(0x00)
# コマンドの詳細は、C言語のDLLを解読して下さい(※1)
$pkt = pack ("C*", 0x04, $pin, 0x00);

#
# ネットワーク関係の変数を確保
#
my ($host, $port, $ip, $sockaddr, $revbuf);

#
# PICNIC のローカルIPアドレス
#
$host = '192.168.xxx.xxxx';

#
# UDPのポート番号
#
$port = 10001;

#
# 関数に送る変数に変換
#
$ip = gethostbyname($host);
$sockaddr = pack_sockaddr_in($port, $ip);
$proto = getprotobyname('udp');

#
# UDPの接続用ソケットを生成
#
socket(SOCKET, PF_INET, SOCK_DGRAM, $proto) or die "socket : $!";

#
# コマンドデーターを送信
#
send(SOCKET, $pkt, 0, $sockaddr) or die "send : $!";

#
# 応答を受信
#
read(SOCKET, $revbuf, 8);

#
# 配列(PICNICから、8バイトデーターを受信)
#
my @array = unpack('H2H2H2H2H2H2H2H2', $revbuf);

#
# RAOの値を表示(配列の4番、5番が、RA0の値)
#
printf( "A/D value = 0x%04x [%4d] %5.3fV\n",
hex($array[4].$array[5]),
hex($array[4].$array[5]),
5/1024*hex($array[4].$array[5])
);

#
# ソケットを閉じる。
#
close SOCKET;

説明は省きます。(^^;;
プログラムのコメントから調べてください。

これを実行すると、
プログラムの結果は、以下のようになります。

A/D value = 0x0175 [ 373] 1.821V

RA0ピンからの値は、373 です。

A/D変換の分解機能は10ビット、1024段階。
アナログ入力の電圧は、0~最大5Vの範囲となり、
1ビットあたり、5/1024 = 0.0048828125、約4.9mVですね。

RA0が、373 の場合は、
5 / 1024 * 373 = 1.821289・・・・
電圧は、約1.821V になります。

上記の写真と比較すると、
ほぼ、テスターの値と同じになりましたね~
これでUDPの通信プログラムの動作検証も完了です。

今日も「いいスマイル」で行きましょう!


ツイッターはじめました~フォロー待ってま~す!!
↓↓↓下記の3つのバナーをクリックして下さい。ランキングUPにご協力をお願いします。↓↓↓

にほんブログ村 経営ブログへランキングUP!

ランキングUP!

banner2.gif 人気blogランキング!

投稿者 shiozumi : 11:49 | トラックバック (0)

このエントリーのトラックバックURL

http://blog.e-smile.ne.jp/cgi-bin/mt/mt-tb.cgi/951