“Hello, World”と「Lチカ」の共通点:空間伝送で学ぶ光通信入門(4)(2/2 ページ)
光通信の基礎から応用までを紹介する本連載。第4回は、さらに基本に立ち返って「Lチカ」を話題として取り上げる。C言語プログラミングの基礎の基礎“Hello, World”との共通点とは。
マイコンの初心者だけでなく経験者も利用する「Lチカ」
これに対して「Lチカ」というのはLEDを点滅させることなので英語では“Blink”ですが、マイコンの初心者が“Hello, World”と同様に最初に書いてみるコードとなります。“Blink”とはまばたきのことで、たまにウインクの意味になることもあります。
「Lチカ」は、マイコンの初心者だけでなく経験者も利用します。例えば、今まで使っていたマイコンとは異なるマイコンを使うときや、同じマイコンでもファームウェアが替わったときなどには、「Lチカ」で動作を確認してから開発に着手します。
これは、「開発チェーン(開発プロセス/ツールチェーン)」が正常に動作しているのか、マイコンそれ自体が動作するのかをチェックするための大切な初期工程となります。開発チェーンはIDE(統合開発環境)と呼ばれることもあり、ソースコード編集機能(エディタ)に加えて、コンパイラあるいはアセンブラ、リンカー、ローダーがこれに含まれます。さらに、プログラムをマイコンのメモリに書き込むライターあるいはプログラマー(書き込み機)もあります。
これら全てのチェーンがターゲットのマイコンで動作しているかを「Lチカ」によって確かめます。もっと言えば、ターゲットのマイコンは開発ボードや評価ボードなど何らかの基板上に搭載されていますので、これらのボードとマイコンも含めて正常に動作しているかをこの「Lチカ」で確かめられるのです。
リスト2は、Arduinoマイコンでプログラムを開発するときに用いられるIDEから参照できる「Lチカ」(Blink)のサンプルリストの一部です。一応、「Lチカ」として動作するコードは全て含まれていますが、全文をご覧になりたい方は、リスト内記載のURLから参照できます。
/*
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Blink
*/
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
10年越しに共著の話が再燃
以前に、坂井氏の“Hello, World”のフレームワークをそのまま拝借して「Lチカ」本を書いてみようかな、という話を坂井氏にしたことがあります。かれこれ10年ほど前のことで、坂井氏と筆者が山梨県内で開催された「セキュリティ・ミニキャンプ」の講師を務めた後、帰りの中央線の電車で交わした会話だったかと思います(セキュリティ・ミニキャンプは、先述のセキュリティ・キャンプと同じ運営団体の主催事業として全国で開催されています)。
この話には坂井氏も結構興味を持たれたようで「共著しませんか」という話も出たのですが、筆者は断りました。当時から、坂井氏はコンピュータ技術書籍の分野では大御所であり、共著するとなると筆者の存在が“食われる”と思ったからです。
ただし、筆者はその後、セキュリティ・キャンプの講師をした際の選考課題に「Lチカ」問題を出すなどいろいろと経験を積みました。そして現在、両者ともセキュリティイノベーターを育成する長期ハッカソンプログラム「SecHack365」のトレーナーを務めており、そこで10年前にあった「Lチカ」本の共著の話が再燃したわけです。なお、さらなる後押しの大きな力になったのは、「Lチカ」本のためにはLEDの発光現象を物理的な見地からも書く必要があると思っていたところ、このあたりの知見を持ったトレーニーが2026年度のSecHack365の今岡ゼミに入ってきて、共著の意思を確かめたところポジティブだったこともあります。
そんなわけで、この話は今回のMONOistの記事が初出ということになりますが、書籍の出版を検討しているところです。
おわりに
今回は「Lチカ」の仕組みを紹介しようと思っていたのですが、前置きだけで終わってしまいました。次回こそきちんと解説しようと思いますのでお待ちください。(次回に続く)
参考文献:
- 坂井弘亮「ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ 第2版」、秀和システム
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「空間伝送で学ぶ光通信入門」バックナンバー
- ≫連載「注目デバイスで組み込み開発をアップグレード」バックナンバー
赤外線発光ダイオードを使って光信号を送受信する
光通信の基礎から応用までを紹介する本連載。第3回は、赤外線発光ダイオードを使って光信号を送受信する実験を行う。
光通信のデジタル変調の基礎「振幅偏移変調(ASK)」を試す
光通信の基礎から応用までを紹介する本連載。第2回は、デジタル変調の基礎に当たる、最も基本的な振幅変調の方式である振幅偏移変調(ASK)を用いた光通信によるアルファベットの符号送信の実験を行う。
光通信入門事始め――古代の人々ののろしと同じように光で信号を送ってみよう
光通信の基礎から応用までを紹介する本連載。第1回は、古代の人々が使っていたのろしと同じように光で信号を送る実験を行う。
USBシリアル変換モジュールが必要なら、代わりにArduinoを使えばいいじゃない
注目デバイスの活用で組み込み開発の幅を広げることが狙いの本連載。今回は、USBシリアル変換モジュールの代わりに、Arduinoに搭載されているシリアル変換チップを単独で使う方法を紹介する。