子供と一緒に始める マイコンプログラム Arduino 入門 チルトスイッチ編 Lesson 08

Arduino-lesson08 学習
スポンサーリンク
「子供と一緒に始める マイコンプログラム Arduino 入門 チルトスイッチ編 Lesson 08」

「Arduino」を使ったマイコンのプログラミングを子供と一緒に学習するブログ。

少しずつ、子供と一緒に楽しみながら気長にアップしてく予定です。

本日はLesson 08 チルトスイッチ編です。
※Tilt Switch(チルトスイッチ)またはTilt Sensor(チルトセンサー)と呼ばれる部品です。
日本語で言うと、傾斜スイッチ、傾斜センサーといったところでしょうか。

原理を理解すると、センサーというよりもスイッチというのがしっくりくる部品です。

 

本Lesson解説で使用しているのはArduino互換品です。

互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段で豊富な部品が多数ついています。

 

はじめに

チルトスイッチ(傾斜スイッチ)は、名前の通り傾きでONとOFFが切り替わるスイッチです。

原理は筒状の本体の中に、2つの接点、それに固定されていない導電隊(金属球)が入っています。

通常は下部の端子にボールが接触していて、端子間に電気を通すようになっています。

逆さになってボールが端子から外れると電気が通らなくなります。

正確な傾きを調べることはできませんが、傾いているいないの2値の検出には便利です。

倒れたらスイッチを切りたい機器などに使われます。

例えば、ストーブなど、倒れても動いていたら困るものに使われています。

補足ですが、正確な傾きを知るためには、加速度センサを利用します。

 

Lesson 08目標

チルトスイッチ(傾斜スイッチ)と、発光ダイオード(以下LED)を使用します。

チルトスイッチを傾けたり、戻したりすることでLEDが消灯、点灯する回路を作ります。

上記によりチルトスイッチが「オン」「オフ」しスイッチの役割をになっていることを確認します。

そのスイッチの働きをLEDの点灯、消灯で確認します。

また、今回はpinMode(pin,mode)コマンドにてINPUT_PULLUPを定義します。

デジタル入力のプルアップ機能についてもあわせて理解します。

本Lessonにでてくるコードはこれまで使用したコードばかりです。

そのためスケッチも理解しやすいです。

本Lessonも、遊ぶというところが今回一番大事なところです。

 

準備

今回のLessonの準備に取り掛かりましょう。

今回も部品は多くないので、すぐに実践に移ることができます。

 

必要なもの

  • USB接続用のPC(IDE統合環境がインストールされたPC)
  • UNO R3(以下UNO)
  • PCとUNOを接続するUSBケーブル
  • ブレッドボード
  • チルトスイッチ(傾斜スイッチ)
  • LED(色はお好きな色をお使いください)
  • 抵抗1種類(220Ω)
  • M-M Jumper wire(UNOと部品をつなぐための配線)
  • M-F Jumper wire(UNOとチルトスイッチの接続に使用)
    ※M-FがないかたはM-Mだけでもできます。

 

使用部品説明

新たに登場した部品について説明していきます。

本Lessonで新しく登場するのは、チルトスイッチのみです。

 

チルトスイッチ 実物写真

下の写真が、チルトスイッチ(傾斜スイッチ)です。

振ると中のボールがカチカチと鳴って動いているのがわかります。

今回購入したELEGOO UNO キットに合わせて梱包されています。

チルトスイッチには「+」、「-」極性は特にありません。

Arduino-lesson08-01

 

ちなみにAmazonで売られているものはこちら。

見た目が違いますが、同じ部品となります。

 

チルトスイッチ 原理

下記にチルトスイッチの原理図を示します。

センサーというよりスイッチという方がしっくりくるというのがお分かりいただけたでしょうか。

 

ON状態
直立時はボールが下部の端子に触れているためボールを介して導通します。
OFF状態
傾けるとボールが端子から離れるため導通が切れます。

Arduino-lesson08-02

 

チルトスイッチ(傾斜スイッチ)を利用した回路図

番外編01にてFritzingが使えるようになったので、さっそく回路図を作ってみました。

 

こちらが回路図。

繰り返しになりますが、LEDが焼き切れないように抵抗の挿入を忘れないでください。

 

Arduino-lesson08-03.jpg

 

こちらがブレッドボード図。
※M-M jumper wireのみでできるようにしています。

Arduino-lesson08-04

 

今回の接続で重要なところは、チルトスイッチを「5V」ではなく「GND」に接続したところです。

 

実践 回路作成とコード作成

さっそく、部品を接続しコードを書いて、動かしていきましょう。

どんな風に動くのか楽しみです。

 

接続

下図に示すように、用意した部品を使用して接続しましょう。

ブレッドボード図ではM-M jumper wireのみで書いています。

M-F jumper wireがある場合は、チルトスイッチはM-F jumper wireで接続した方が動かしやすです。

使用するポートは、Digital IOの「2」、「3」、電源の「5V」、「GND」です。

穴に挿入しづらいときは、ラジオペンチなどを使用してください。

 

Arduino-lesson08-05

 

コードの書き込み

接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。

本記事のコードを参考に書いてみてください。

実際書いてみた方が慣れるのに良いです。

コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で別名で保存しておきましょう。

今回のコードの肝は、pinMode(pin,mode)コマンドの使い方です。

 

コマンド説明

コードの説明をしていきたいと思います。

復習もかねて、今回の重要コマンドの説明をします。

特に、pinMode(pin,mode)のmodeの所を注目してください。

今回は、modeにINPUT_PULLUPを使用します。

コマンド説明
digitalRead(pin)指定したピンの値を読み取ります。
その結果はHIGHまたはLOWとなります。
例:val = deitalRead(pin)
変数valに入力ピンの状態が入ります。
pinMode(pin, mode)pin::設定したいピンの番号
mode:INPUT,OUTPUT,INPUT_PULLUP
INPUT_PULLUPは、内部プルアップ抵抗を有効にできます。
INPUTを指定すると、内部プルアップは無効となります。
※プルアップするとは?
ピンに何も繋がっていなくても「High」にできるということです。
UNOのデータシートには20kΩ~50kΩと記載されています。

※プルアップについて
指定したピンが20kΩ~50kΩの抵抗を介して5Vにつながっていると考えてください。

 

サンプルコード

サンプルコードを下記に示します。

下記をUNOに書き込んで動作を確認していきます。

※一部コードに誤記があったので修正しました。@2018年12月23日

//傾いたらLEDを消灯させて知らせるスケッチ

int tiltPin = 2;//チルトスイッチ
int ledPin = 3;//LED

void setup() //初期設定
{ 
  pinMode(tiltPin,INPUT_PULLUP);//2番ピンをプルアップありのインプットに指定
  pinMode(ledPin,OUTPUT);//3番ピンをアウトプットに指定
} 

void loop()  //ループ関数
{  
  int digitalVal = digitalRead(tiltPin);
  if(HIGH == digitalVal) //2番ピンがHighならAを実行
  {
    digitalWrite(ledPin,LOW);//A 2番ピンがHighなら傾い導通していないためプルアップ。LED消灯させる。
  }
  else //2番ピンがHighでない場合Bを実行
  {
    digitalWrite(ledPin,HIGH);//B Highでなければ傾いていないのでGNDに接続される。LED点灯させる。
  }
}

 

実践 動作確認

では、さっそく動作を確認していきます。

・チルトスイッチ 直立時

LEDが点灯しています。

Arduino-lesson08-06

 

・チルトスイッチ 傾斜時

LEDが消灯しています。

Arduino-lesson08-07

 

チルトスイッチの、ON/OFF確認できましたでしょうか?

今回はLEDを利用しましたがLesson06 で学習した電子ブザーを使ってみるのもおもしろいです。

倒れたらブザーがなる。

実際にそういう機器ありますよね?子供が「おー、すごい」ということ間違いなし。

身近にあるものと関連づけられると楽しみが増します。

とにかく遊ぶことが理解に一番近づく方法です。

 

なぜGNDに接続か

今回、チルトスイッチを「5V」ではなく「GND」に接続しました。

なぜ、「GND」に接続したのか?

これ、結構回路作成で重要だったりします。

「5V」に接続しても作成することはできます。

その場合、チルトスイッチが「ON」しているとき2番ピンは「High」と認識します。

では、チルトスイッチが「OFF」している場合はどうなるか?

2番ピンが浮いた状態になってしまい、High,Lowの状態が正しく認識できません。

認識させるためには、チルトスイッチが「OFF」の時にはプルダウンさせておく必要があります。

しかし、UNOの入力ピンにはプルダウン機能がありません。

そのため、外付けで数十kΩ程度の抵抗を2番ピンに付けてプルダウンを作る必要があります。
※プルダウンの接続方法:2番ピン ー 抵抗 ー GND

部品が1個増えてしまいます。

回路を作成するときは、できるだけ部品数を少なくした方が良いです。

部品が少なければ少ないほど、不具合も少なくなりますしコストも下がります。
※趣味で遊んでいる分には、気にする必要がありませんが・・・。

ちなみにチルトスイッチを5Vに接続し、プルダウンを追加した回路図がこちら。

試しにこちらも遊んでみてください。

今回のコードをそのまま使用した場合、動作が逆になることがわかります。
※ただしプルアップを無効にするために
pinMode(tiltPin,INPUT_PULLUP);
pinMode(tiltPin,INPUT);
に変更してください。

チルトスイッチが直立時、LEDがOFF。

チルトスイッチが傾斜時、LEDがON。

Arduino-lesson08-08

 

まとめ

今回は以下の内容について理解してもらいました。

特に項目4の遊ぶことが一番の目標でした。

1.チルトスイッチが「オン」「オフ」しスイッチの役割をになっていることを確認する。
2.チルトスイッチの動きをLEDの点灯、消灯で確認する。
3.デジタル入力のプルアップ機能についてもあわせて理解する。
4.楽しんで遊ぶ。
その他 プルダウンについても、ついでに理解する。

 

いかがだったでしょうか。

Lesson 08 チルトセンサー編はここまで。

ぜひ、みなさんも子供と一緒にやられてみることをお勧めします。

 

次回、Lesson 09は「サーボモータ編」です。

ラジコンのステアリングのようなことができます。

子供が喜ぶこと間違いありません。

子供と一緒に始める マイコンプログラム Arduino 入門 サーボモーター編 Lesson 09
本日はLesson 09 サーボモーター編です。サーボモータは信号に応じて0度~N度の範囲で回転するモーターです。今回はサーボモーターの制御方法を理解します。また、サーボモーターをラジコンのステアリングのように動かしてみます。そのためポテンショメータの使い方も理解します。

 

本Lessonで使用しているUNOはAmazonにて購入可能です。

Amazon ベストセラーNo.1
ELEGOO UNO キット レベルアップ  チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用

 

上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。

コメント

タイトルとURLをコピーしました