5 デジタル入力
今回の講義の目的は、外部の情報をマイコンでキャッチする方法をマスターすることです。ただし、今回扱うのはデジタル信号です。具体的には、スイッチが押されたことをマイコンで検知する、ということをやります。 目次 5.1 スイッチ 5.2 デジタル入力 5.3 チャタリング 5.4 実習 5.1 スイッチ スイッチというのは、電線を連結したり切断したりするためのデバイスです。ボタンということもあります。スイッチには様々な種類が存在しますが、よく使うものはタクトスイッチと、トグルスイッチです。 タクトスイッチ(tactile switch)とは、ボタンの形状をしていて、押すと電線が連結され、離すと切断されます。 写真のタクトスイッチはとても小さくて、5ミリ角くらいです。このタイプのものは、そのままブレッドボードに差し込んで使うことができます。 足が4つ付いていますね。これらの足は、2つずつの2グループに分かれていて、同一のグループに属する足は、常に通電するようになっています。どの足とどの足が繋がっているかは、背面にマークがあることが多いです。写真の製品の場合には、背面に線が書いてあって、繋がっている足がわかります。マルチメータを使ってどの足とどの足が通電しているか確認しておきましょう。 タクトスイッチが押された時にLEDが光る回路は以下のようになります。電源と抵抗の間にあるのが、タクトスイッチの記号です。 タクトスイッチをブレッドボードに挿す時には以下のように真ん中の仕切りをまたぐようにすると良いでしょう。 トグルスイッチ(toggle switch)とは、電線の連結と切断を切り替えられるようにしてあるスイッチです。どちらかを選択すると、他を選択し直すまで同じ状態を保ちます。 スイッチの電子部品記号は、いくつかあります。この講義では以下の2つを使います。 おまけとして、ディップスイッチの写真も載せておきます。これは、複数のトグルスイッチが1つのパッケージになったものです。 5.2 デジタル入力 スイッチの状態を感知するというのは、マイコンにとってはデジタル信号の入力を行うことです。ピンにかかる電圧は3.3Vか0Vのどちらかになり、3.3Vならば1、0Vならば0という数値で認識します。 スイッチは、直感的にわかりやすいデバイスですが、マイコンへの入力として使うときには少し注意が必要です。以下のように回路を作ると、タクトスイッチが押されたかどうかをマイコンで検知できそうに思いますよね。 しかし、これは正しくありません。タクトスイッチが押されているときには GPIO 17 が3.3Vにつながりますから正しく検知できます。しかし、タクトスイッチが離されているときには、GPIO 17はどこにも繋がっていない状態になります。このような状態を、ピンがオープンになっていると言い、マイコンのピンの電圧は周りのピンの影響を受けて安定しません。すると、ピンの電圧が3.3Vと計測された場合に、スイッチが押されていて3.3Vにつながっているのかオープンで安定しないために3.3Vとなっているのかが見分けられません。 また、以下のような回路もよく見られる間違いです。 この回路では、スイッチを押したときに3.3Vとグランドがショートしてしまうので大変危険です。火花が飛んだり、導線が焼き切れて焦げた匂いがしたり、回路やマイコンボードが破損する恐れがあります。 正しくは以下のような回路を組みます。回路に使われる抵抗は、10kΩがよいでしょう。 GPIO 17 をデジタル入力として使用する際には、マイコンの中では以下のようなことが行われています。これはピンをデジタル入力として使う場合で、前回実験したデジタル出力の場合には当てはまりません。 GPIO 17 をデジタル入力に使っている時には、 GPIO 17 の先は非常に大きな抵抗を介してグランドに接続されています。図では仮に3MΩ(メガオーム)としています。このような状態をハイインピーダンスと呼びます。 GPIO 17 の内部では、マイコンがこの大きな抵抗にかかる電圧を計測しています。 この例では、10KΩの抵抗と3MΩの抵抗は並列に接続されていますね。並列に接続されているということは、どちらにも同じ電圧がかかるということです。タクトスイッチが押されると、並列回路の部分に3.3Vの全てがかかるはずです。よって、 GPIO 17 では3.3Vが計測されます。タクトスイッチが離されている時には、抵抗に電流は流れませんので両端で電圧差はなく、 GPIO 17 はGROUNDと同じ電圧になりますから0Vになるわけです。 このような回路をプルダウン回路と呼び、10KΩの抵抗をプルダウン抵抗と呼びます。 […]