実験室-Danger-では大変危険な実験をしています。
このサイトの記事をまねして行った、制作、実験により起きた事故については一切責任を負いません。
きちんと危険性を理解して実行し、友達等に簡単に貸し出さないようにしてください。

2012年4月7日土曜日

マイクロコンピューターの世界へれっつごー

どうも!roboです今回はハードしかできないという汚名を打ち砕くべく、マイコンと格闘したので、それについてお話したいと思います。

マイコン、プログラミングにうといひとでもわかりやすいように簡単な説明を目指しますのでどうか苦手な方も楽しく読んでほしいです!



まず、はじめに購入したものについてですが、僕は秋月で販売中のR8Cの学習キットを買いました。(買ったのは一年も前の話です)

サンプルプログラムもついておりまして、書き込みも専用ソフトつき。入門には最適でしたと宣伝しておきましょう!
書き込みの準備のために簡単な基盤を作る必要があるので、シリアルコネクターメス、銅線、ユニバーサル基盤、0.1マイクロの適当なコンデンサー5つくらいと、MAX3224などのICが必要になります。はじめたいという方はこれらが必要ですので、ご注意を。
あと、シリアルポートのないパソコンをご利用の方はUSBシリアル変換ケーブルを用意しておきましょう。

マニュアルもとてもわかりやすく、快適に書き込みまでたどり着けました

サンプルプログラムにLEDの点灯プログラムがあったので、それをいじります。
学校でC++を教わって本当によかったです・・・。
でね、自慢なんですけど、クラスで唯一のプログラミング点、満点ですよ!
推しときますけど唯一ですよ!
どやぁ!ふははh(殴
殴ることないじゃん・・・いてぇ・・・


てなわけでね、俺はやればできるんだぁぁぁぁぁって勢いでマイコンできない意識を駆除していきました。

というわけで、基盤はそのままでプログラムをいじりスイッチを押しながら横に振ると・・・!



おおおぉぉぉぉぉ!

えーどうなっているかを簡単に説明すると
メモ帳に■と□で「DANGER」をドット絵で書きます。
それを一列づつ手作業で16進数(数字の書き方。人がよく使うのは10進数と呼ばれます。16進数はコンピューターに通用しやすい数字だと思ってください。)に直しました。

たとえば、こんな感じ(Rの例です)

□□□□□□□□ 00
■■■■■■■■ FF
□□■■□□□■ 31
□■□■□□□■ 51
□■□■□□□■ 51
■□□□■■■□ 8E
□□□□□□□□ 00

で、LEDのつながっているピンのレジスタ(マイコンの中にある数字の入れ物みたいなものです。)に適当な間を空けて数字をなげこんでやれば、LEDがこの順番で点灯するようになるわけです。 
簡単だね・・・!

さあ楽しくなってまいりました!

お次はこちらぁ!















はい、拡張基盤を作ってみました。
この基盤を振って文字を出してみようということです。
写真の上のほうになんか棒がついてますね?
これ、実は半田を絶妙につけて棒が左右に動くようになってるんです。

つまり、この基盤を右に振ると棒が左に倒れ、左に振ると右に倒れるスイッチなのです!
重力加速度センサ(簡易版)です!

あまり長い文字列では振るのが大変なのでDAだけの表示になりますが・・・




うまくいきました!

さあ、次の拡張は・・・男のロマン、夢の詰まった7セグLED!
ごつい金属製の箱に赤のLED表示は某名探偵コ○ンの時限爆弾でもおなじみですよね!



かっこいいですよね。

さて、数字を一通り表現させるには一文字あたり7本の足が必要になります。

  ■ ■ ■
■     ■
■     ■
■     ■
  ■ ■ ■
■     ■
■     ■
■     ■
  ■ ■ ■

これをみればどういう意味かわかりますよね?
このパターン考えた人最高です・・・。

では、4文字表すのには28本足が必要になるのか?
そんなにマイコンに足はありません。

7+4=11 ピンしかいらないのです!これをダイナミック点灯といいます。
名前かっこいいですがやってることは実にセコイのです。

各セグメントは並列に接続しておきます。で、コモンの足だけは別々にしておきます
これで4つの7セグLEDを動かすときは合計11本の足になります。

まず、一番目のLEDのコモンにだけ電圧をかけ、全体に8を表示させます。
すると・・・

        on        off        off        off
8→   8    

一番目のLEDだけがつくはずです。だってほかのLEDには電源がきてないのでね。

次のLEDに電源をいれ、6を全体に表示させます。すると・・・?


        off       on        off        off
6→              6

ほい、次、


        off       off        on        off
1→                         1

次。


        off       off        off        on
4→                                     4



これで4つのLEDにそれぞれ数字をつけました。
ここまできたらまた8から順に表示させるのを繰り返します。

こんなんやったって同時に8614表示できないはずじゃん?




できちゃうんです。
これは人間の動体視力を超えた速さで点滅させてるから同時に光ってるように見えちゃうんです。
人間なめやがって・・・・・・・!

























お前たちでは私の速さについていけないだろ?(ドヤァ
チックショォォォォ!


ついでにこの方法は電光掲示板などにもつかわれています。
あと蛍の光のようにLEDがゆーっくりついてゆーっくり消えていくのとかありますね。
あれでも高速で点滅させることであたかも暗くなったかのようにみせているのです。
モーターをゆっくり回転させるPWM制御もおなじでコンピューターにしかできない業です。
コンピューター版残像拳といったところでしょうか?

さあマイコンたのしくなってきました。もう次はできたのですが、この話は次回の楽しみとしてとっておきましょう。
次回のキーワードはDTMF。暇ならいったい何のことかぐぐってみてください。

追記:
 10万ヒットありがとうございます!