XRQ技研業務日誌

ものづくりを楽しんでいます。日々の暮らしの中に面白そうなものを探しながら

Dec、Hex、Bin Converter

権現堂公園・曼珠沙華

 台風が列島を縦断し多くの被害をもたらした。過ぎ去った後には秋の気圧配置になり気温が下がってきた。富士山では例年よりも早く初冠雪があり、日光では初氷が張ったという。気温の変化が激しく体調を崩しがちである。朝晩は上着が必要でも日中は半袖でも過ごせる。暑さに慣れた身体を気候に順応させていかなくてはならない。

 このところPicを使った製作をしている。以前は簡単な数字の表示にもLCDを使うことが多かった。それは7セグメントのLEDを使うと消費電力が大きかったことも理由の一つだった。しかし、最近は状況が変わってきた。高輝度のLEDが出てきたことで省電力でも7セグを駆動することができるようになったこと。また、LCDでもバックライトを使って見やすくすることが多くなり、その電力が結構大きいので両者の差が小さくなってきたのだ。数字の視認性から7セグLEDは有利である。
 7セグは”8”の字に配列したLEDを一つ一つ点滅させて数字を表示するのだが、マイコンではそれぞれに割り当てたbitで指示を出している。8ビットで小数点を含めた数字を表現するのだが、そこで必要になってくるのが2進法である。どのビットで点灯させ、どのビットで消灯するのか、2進法で表記することになる。そして実際にプログラムするときには2進法ではなく、10進法や16進法での表記で行うのだ。
 プログラム作業を進めるとき、2進法、10進法、16進法の相互の変換を行うことがたびたびあるのだが、一覧表で捜しながら行うのではスマートでない。各進数相互の変換を行うコンバーターができないものかと考えた。ネットでは各種の計算機が公開されているのだが自分で作ってみるのも一興である。
 Excelのヘルプを見ると「DEC2HEX」「HEX2BIN」「BIN2DEX」などの関数?があることがわかった。早速これを使おうとしたのだが「ADDINが必要」とのメッセージが出て、すぐには使うことができなかった。そこで、通常の関数を使って変換するシートを作ることにした。2進数や16進数を10進数に変換するのにはそれぞれのビットをかけ算し、それを足していけばよいのでExcelのセルに数式を埋め込んだ。逆の場合も割り算を繰り返すことで各ビットの状態を求めることができる。
 少し手間取ったのが16進数の変換である。10=A,11=B,12=C,13=D,14=E,15=Fと変換しなくてはならない。そこで変換テーブルを作っておき、VLOOKUP関数を使って変換を行うことにした。この変換を使うことで計算を10進数で行うことができるのだ。
 Dec、Hex、Bin相互の変換がExcelの入力枠へ打ち込むだけでできるようになり、作業が効率化してきた。次はこのデータをどのように動かして所定の動作をさせるかである。プログラミングは骨組みができても細部の調整をしないとなかなか動いてくれない。バグ取りに苦しみ、いろいろと考えを巡らしているのが楽しいのだ。さてこの装置が動き出すのはいつになるのだろう。