\ AmazonにてArduino UNO R4 発売中!! /

Arduino 入門 Lesson 08 【チルトスイッチ編】

Arduino-lesson08 Arduino入門編
記事に広告(アフィリエイト広告)が含まれています。
スポンサーリンク
子供と一緒に始める マイコンプログラム
Arduino 入門
Lesson 08
【チルトスイッチ編】

こんにちは、管理人のomoroyaです。

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

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

 

本記事はLesson 08 【チルトスイッチ編】です。
※Tilt Switch(チルトスイッチ)またはTilt Sensor(チルトセンサー)と呼ばれる部品です。

日本語で言うと、傾斜スイッチ、傾斜センサーといったところでしょうか。

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

 

Arduino入門編の解説にて使用しているArduinoは互換品です。

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

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

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

 

正規品の本体単品がほしい方はこちらとなります。

 

スポンサーリンク

はじめに

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

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

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

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

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

 

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

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

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

 

Lesson 08目標

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

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

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

 

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

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

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

 

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

そのためスケッチ(コード、プログラム)も理解しやすいです。

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

 

準備

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

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

 

必要なもの

 

Jumper wire、抵抗は今後も頻繁に利用します。

Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。

短めが使いやすい場合も。

 

抵抗も単品で揃えるよりはセットをおすすめします。

 

抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!

という方は、「電子工作基本部品セット」が使い勝手が良い。

 

使用部品説明

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

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

 

チルトスイッチ 実物写真

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

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

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

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

Arduino-lesson08-01

 

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

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

手持ちがない方は、こちらをどうぞ。

 

Amazonの中華電子部品が在庫不足?

すぐに、欲しい場合はこちらか・・・。

 

チルトスイッチ 原理

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

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

 

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

Arduino-lesson08-02

 

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

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

 

こちらが回路図。

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

 

Arduino-lesson08-03.jpg

 

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

Arduino-lesson08-04

 

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

 

補足(本Lessonの5V端子に関して)
本LessonではArduinoの5V端子を使用しておりません。
3pinなどのデジタルピンはArduinoのなかでは、最終的に5Vにつながっています。
※高抵抗だったり、ドライバー(スイッチ)だったりを介して。
digitalWrite(ledPin,HIGH);
→設定したピンは5Vにつながっていると考えて差し支えありません。。
pinMode(tiltPin,INPUT_PULLUP);
→高抵抗を介して5Vにつながっていると考えて差し支えありません。

 

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

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

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

 

接続

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

ブレッドボード図では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日

//Lesson 08 傾いたらLEDを消灯させて知らせるスケッチ
//https://omoroya.com/

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を利用しましたがLesson 06 で学習した電子ブザーを使ってみるのもおもしろいです。

倒れたらブザーがなる。

実際にそういう機器ありますよね?

子供が「おー、すごい」ということ間違いなし・・・多分。

 

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

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

 

なぜ「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度の範囲で回転するモーターです。今回はサーボモーターの制御方法を理解します。また、サーボモーターをラジコンのステアリングのように動かしてみます。そのためポ…

 

最後に

疑問点、質問などありましたら気軽にコメントください。

この電子部品の解説をしてほしい!などなどなんでもOKです。

リンク切れ、間違いなどあればコメントいただけると助かります。

 

Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。

 

Arduino入門編で使用しているUNOはAmazonにて購入可能です。

互換品とは言え、Arduinoはオープンソース。

複製して販売するのもライセンス的に問題なし。

 

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

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

 

学習用、遊び用、お試し用には安価な互換品がおすすめです。

 

 

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

 

Amazonでお得に買う方法

Amazonでお得に購入するなら、Amazonギフト券がおすすめです。

現金でチャージするたびに、チャージ額に応じたポイントが付与されます。

最大2.5%!!!(Amazonプライム会員ならさらにお得)

チャージ額(一回分) 一般 プライム会員
5,000円~19,999円 0.5% 1.0%
2,0000円~39,999円 1.0% 1.5%
40,000円~89,999円 1.5% 2.0%
90,000円~ 2.0% 2.5%

さらに、初回チャージで1000ポイントもらえるキャンペーンも実施中!

\Amazonギフト券 1000ポイントキャンペーン/
Amazonチャージ 初回購入で1000ポイントキャンペーン

 

補足情報
コンビニ・ATM・ネットバンクが対象
購入は1円単位で可能

コメント

  1. ぺっこり より:

    みなさんと同じ感想になりますが、5Vからどこにもつながらないジャンパー線でずっと悩んでいました。
    組んでるときも「これなんで必要なんだろう?」という疑問があり、結局繋がなくても動作したので……。
    (コメントを見てようやく「何か意図があったんだ」ということに気づきました)

    以前のレッスン6、レッスン7の場合は、GNDとデジタルPINのみの回路図で動作させていたと思います。
    今回のレッスンのみということであれば、その旨を回路図の説明のところに入れておいてもらえると迷わなくてよいかなと思いました!

    • omoroya omoroya より:

      コメントありがとうございます。
      記事に追記しておきました。
      迷いの原因になっていたとは気づきませんでした!
      また、何かあればコメントいただけると助かります。
      よろしくお願いいたします。

  2. 大山田 より:

    最近始めた初心者です。初めまして。
    かおちー様と似た質問です。

    >実際の接続画像を見ても、arduinoの5Vからブレッボードの+にジャンパ線が繋がれたあと、どこにも繋がっていない

    私もここで躓きました。
    (PULLUPも個人的に調べましたが理解出来そうで出来ておりません…(*_*;笑)

    掲載されてある通りブレッドボードへ配線、コードの記述を済ませ、
    問題なく書き込めて動作しております。

    そこで上記の配線を不思議に思い、
    5V⇔ブレッドボードのプラス間にあるジャンパーワイヤーを外してみましたが
    見た目上は問題無く動作しております。

    電機はプラスからマイナスに向かって流れる、を前提とし、
    USB(5V)→3pin→抵抗→LED→マイナス①→GND
    USB(5V)→2pin→チルトスイッチ→マイナス②→GND
    (マイナスとGND間のジャンパーワイヤーは1本)

    以上の通り、5V⇔ブレッドボード間のジャンパーワイヤー無しで動作しております。

    • omoroya omoroya より:

      コメントありがとうございます。
      回路図の5VとGNDは使う使わないにかかわらず、ブレッドボードにつなぐようにしているだけとなります。
      本LessonではArduinoの5V端子を使用しておりません。
      3pin、2pinなどのデジタルピンはHigh、LowをOUTPUTする、High、Lowを認識するINPUTとして使うことができるピンです。
      ということは、Arduinoのなかでは、最終的には5Vにつながっているということです。
      ※高抵抗だったり、ドライバー(スイッチ)だったりを介して。
      digitalWrite(ledPin,HIGH);
      とすることで、そのピンは5Vにつながっていると認識いただいて問題ありません。
      pinMode(tiltPin,INPUT_PULLUP);
      とすることで、こちらは高抵抗を介して5Vにつながっていると考えて差し支えありません。
      答えになっていますでしょうか?

  3. かおちー より:

    はじめまして。電子工作初心者です。回路図は5Vからチルトスイッチに繋がっていますが、
    fritzingのブレッボード図を見ても、実際の接続画像を見ても、arduinoの5Vからブレッボードの+にジャンパ線が繋がれたあと、どこにも繋がっていない(回路が一周せずに途切れている)ように見えるのですが、この状態でなぜ電気が流れるのでしょうか?

    • omoroya omoroya より:

      コメントありがとうございます。
      チルトスイッチは2番ピンに接続しています。
      スケッチ上で2番ピンは「プルアップ指定」しており、抵抗を介して5Vに繋がっている状態となります。
      イメージとしては、
      5V-抵抗-チルトスイッチ-GNDと繋がっています。
      「5V-抵抗」の部分が2番ピンをプルアップ指定した場合の役割となります。
      fritzingの回路図もチルトスイッチは2番ピンにつないでいるはずです。(1つ目の回路図)
      古い情報かもしれませんので、F5を押すなどして一度cash情報を更新してみてください。
      ちなみに、後半に記載している2つ目の回路図は、別の説明の回路図となります。

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