LED

〜工事中〜

マイコン(MCU)のプログラミングの第一歩はLEDの点灯/消灯、いわゆるLチカをやります。

  • Lチカの意義
     初めてのプログラム言語に相対した時には「Hello World !」をやるのは、プログラミングを学ぶ際の常道です。これによりその言語の標準出力への出力方法を理解することが出来ます。標準出力への出力方法の理解がなぜ必要かといえば、動作確認(=テスト&デバッグ)で必要になるからです。PCには標準出力(通常はConsole 出力)があります。MCUには標準出力はありません。そうは言っても先に述べたとおり、出力手段が無いと動作確認が出来ません。その動作確認をするための最も簡単な方法がLEDを点灯/消灯することにより、出力の確認につなげるわけです。Lチカの方法は、MCUによって違います。この中にはLチカに至るまでの動作環境の設定も必要になります。まとめると、

    • LEDは出力方法のひとつ(=標準出力)
    • LチカはMCUごとにアプローチが変わってくる
      =>「Hello World !」に至る道がプログラミング言語ごとに違うと同義

    となります。

  • Lチカの仕組み

     Lチカを行うためにはデジタルポート(GPIO=GeneralPurposeI/O)に抵抗を介してLEDを接続します。デジタルポートですからデジタル値、つまり「1」か「0」を取ります。「1」か「0」をこのポートに出力させることにより、LEDを点灯あるいは消灯させます。

  • ポートと論理

     前項でデジタルポートが必要であると述べました。また、そのポートに「1」か「0」を出力させて点灯か消灯させることについてもです。直感的にわかりやすいのがデジタルポートを「1」にすると点灯、消灯はその逆です。回路によっては「1」で消灯、「0」でその逆です。なぜ、このような事が起こるのでしょうか?それを理解するためには「供給電流」と「吸い込み電流」の意味を理解する必要があります。
     「1」にすると点灯の場合は「供給電流」になります。これはMCU側からLEDに電流が流れます。つまり、MCUから電力を供給していることになります。MCUの供給能力を考慮しなければなりません。これを正論理で点灯といいます。
     「0」にすると点灯の場合は「吸い込み電流」、つまり外部から電力を供給してそれをどれだけ受けることが出来るか?吸い込める電流の能力について問われます。これはMCUでマチマチです。これは負論理で点灯といいます。
     Web-Masterの記憶を辿ると、20年くらい前は負論理で点灯が多かったように思います。MCUの供給電流が大きくなったのでしょうか?ちなみにGroovy-PIDは「0」で点灯(=負論理で点灯)になります。

  • コード