このエントリは(リンク)の関連記事になっています。
Arduino界のHelloWorld、またの名をLチカこと「blink.ino」を理解する上での基礎知識について解説しています。
今回は電子回路編①「デジタル出入力ピン」についてです。
Arduino UNOの「デジタル出入力ピン」
上図赤く囲んだ部分が「デジタル出入力ピン」です。
左からD13、D12、…..、D1、D0と名前が付けられていて、この数字部分を指して「ピン番号」とよく呼びます。
名前の通り、「デジタル」の「入力」と「出力」に使えるピンです。
「デジタル」と「アナログ」
特にデジタルという言葉は身近でもよく聞きますが、ここで一度整理しましょう。
Wikipedia先生の解説です。
ポイントを引用すると、
デジタル(英語: digital, 英語発音: [ˈdiʤətl]。ディジタル)とは、整数のような数値によって表現される(飛び飛びの値しかない)ということ。
アナログ(英: analog、英語発音: [ˈænəˌlɔːg] アナローグ)は、連続した量(例えば時間)を他の連続した量(例えば角度)で表示すること。
です。
わかりやすい例としては時計があるかと思います。
アナログ時計の特に「時針」は常にどこかの数字を指しているわけではありません。
たとえば上の絵だとだいたい「10時8分」ですが、時針は「10時」と「11時」の間の中途半端な位置にいます。
ところが、デジタル時計では「10時ちょうど」だろうと「10時59分59秒」だろうと「10時台」ならずっと「10時」と表示しています。
Wikipediaの解説の通り、
デジタル時計は時刻を「整数のような飛び飛びの数値で」
アナログ時計は時刻を「連続した角度で」
示しています。
じゃあ、Arduinoの「デジタル」って?
Arduino(を含むコンピュータ)にとっての「デジタル」は「0か1か」です。
「0」は0V、「1」は電源の電圧(たいてい5V)のことを意味しています。
デジタル出力は、0か1かを出力する=「ON」か「OFF」かで出力します。
LEDで言えば「点灯」か「消灯」、モーターで言えば「動く」か「止まる」か等です。
「ON」か「OFF」か
「全」か「無」か
「白」か「黒」か
そういう世界です。
LEDを「ちょっと暗くしたい」、モーターを「ちょっとゆっくり回したい」なんてことはできません。
そういう使い方をしたい場合は「アナログ出力」で使います。
同じように、デジタル入力は0か1かで判断します。
スイッチを「押している」か「押されていない」か、明るさのセンサが「明るい」か「暗い」か等です。
(※厳密にいえば0と1とを判断するボーダーラインがあります。)
「どのくらいの明るさか?」という判断はできません。
そういう使い方をしたい場合は「アナログ入力」で使います。
デジタル出力ピン
デジタル出入力ピンを「デジタル出力モード」にすると、「ON」か「OFF」かの出力ができます。
スケッチ上では「pinMode」命令で「デジタル出力モード」に設定して、「digitalWrite」命令で実際に出力を切り替えます。
「0」と「1」や「ON」と「OFF」は「HIGH」と「LOW」という単語で表現します。
1 2 3 4 | pinMode(ピン番号,OUTPUT); //デジタル出力モードに設定 digitalWrite(ピン番号,HIGH); //「1」を出力 digitalWrite(ピン番号,LOW); //「0」を出力 |
電気回路的にはこんな感じをイメージするとわかりやすいでしょう。
「digitalWrite」で「HIGH」を出力すると、その端子を+5V(Arduinoの電源の+極)につなぎ、「LOW」を出力するとGND(Arduino電源の-極)につなぐイメージです。
例えばLEDを接続すると、
「digitalWrite(13,HIGH);」とするとLED点灯し、「digitalWrite(13,LOW);」とするとLEDが消えます。
デジタル入力ピン
デジタル出入力ピンを「デジタル入力モード」にすると、そのピンが「ON」か「OFF」かを読み取ることができます。
スケッチ上では「pinMode」命令で「デジタル入力モード」に設定して、「digitalRead」命令で実際に読み取ります。
結果はoVなら「false」、Arduinoの電源と同じ電圧がかかっていれば「true」とdigitalRead命令に対して返事をします。
下のプログラムでは「pin」という変数(≒テストの解答欄をイメージしてください)に返事を書き込みます。
1 2 3 4 | pinMode(ピン番号,INPUT); //デジタル入力モードに設定 boolean pin; pin = digitalRead(ピン番号); //ピン番号は「HIGH」か「LOW」か? |
電気回路図的なイメージはこうです。
内部にLEDが接続されていて、点灯していれば「true」、点灯していなければ「false」と返事が返ってきます。
スイッチを入れると、押されていなければ「false」、押されていれば「true」が返ってきます。
(実際にはこういう使い方はしませんが、イメージしやすいようにこのように描きました。)
デジタル出入力ピンの解説はここまでです。
コメント