こんにちは、SEのトモです。
Arduino電子回路のレッスン5「傾きセンサーとサーボ」を学習しました。
使っているキット
Amazonで購入した
ELEGOO ARDUINO UNO 最終版スターターキットを使っています。
メインのArudinoボードに加えてセンサーやモーターなどの部品が63個も入っています。
今回使ったもの
傾きセンサー
サーボ
Aruduinoボード
配線用のケーブル
傾きセンサーとは?
中にボールが入っており
上向きになるとON、横向きになっているとOFF
を検知できるスイッチ
傾きセンサーの回路図
上向きになるとボールと回路が接触してスイッチON
横向きになるとボールと回路が離れてスイッチOFF
ポイント
向きや傾きを検知できるので、おもちゃ、ガジェット、家電製品などで使われます
サーボとは?
180度狙った角度に動かす事が出来るギアモジュールです。
Arduinoボードから特定の周波数でパルスを流すと、角度を変更できます。
サーボの回路図
ポイント
特定周波数を掛けると対応した角度に向きを変えます。
ラジコンカーのハンドルを回した時に、タイヤの向きを変えるなどとても動きのあるモジュールになります。
実際に回路を作ってみる
まずは傾きセンサーとArudinoボードを配線する
GNDと2番ポートを繋ぐだけなので回路は簡単です。
実際に傾きセンサーをつけるとこんな配線になります。
傾きセンサーのプログラミング制御
今回の傾きセンサー回路は、傾きを検知してスイッチのオンオフをArduinoボードがチェックするためのプログラミングが必要です。
と言ってもサンプルプログラムがあるので、流し込むだけです。
1)ArduinoIDEを起動
2)ファイルー開くでBall_Switchのサンプルコードを開く
3)以下のサンプルプログラムが開くので、「⇒」ボタンのマイコンボードに書き込むボタンをクリックして、プログラムを流し込みます。
4)センサーを上向きにするとLEDが光る
5)下向きにするとLEDが消える
プログラムを解説
サンプルで使ったプログラムに赤字でコメントを追加しました。
傾きセンサーのついた2番ポートの状態を確認して、上向きならLEDを点灯、下向きならLEDを消灯させています。
digitalRead : 指定したピンがHIGHかLOWか確認する
digitalWrite: 指定したピンをHIGHかLOWに変更する
感覚的に上向きならHIGHとしたい所ですが、逆になっているのがミソです
ポイント
傾きセンサーは、2番ポートとGNDに跨って接続しています。
つまり上向きになってスイッチONになると、電圧ゼロのGNDに繋がります。
従って上向きになったらLOW、下向きでスイッチOFFになると、2番ポートの初期設定HIGHを読み取る為HIGHになる。
この手のHIGHなのかLOWなのか設定を見極める所が、一番難しいポイントかもしれません。
サーボの回路を作ってみる
続いてサーボの回路に挑戦です、
GNDと5Vの電源と9番ポートにpulse用の線を繋ぐだけなので簡単です。
実際に繋ぐとこんな感じになります。
サーボのプログラミング制御
サーボを動かすためには、Arudinoボードにサンプルプログラムを流し込む必要があります。
1)ArduinoIDEを起動
2)ファイルー開くでservoのサンプルコードを開く
3)マイコンボードに書き込む
4)サーボが180度左右に動く事が確認できました。
プログラムを解説
サンプルで使ったプログラムに赤字でコメントを追加しました。
基礎プログラムの読み込み部分
#include<Servo.h>
と書かれた部分ですが、Servo.hと言う名前のファイルを読み込んで、サーボを動かす為の基礎プログラムを呼び出しています。
Servo myservo
呼び出したサーボの基礎プログラムを使用できるように、myservo変数にServoプログラムの中身をコピーして、これ以降のプログラムで使えるようにします。
セットアップ
myservo.attach(9)
9番ピンをサーボの信号線として使う為のセットアップします。
サーボの動作部分
myservo.write(pos) : サーボに指定した周波数を流し角度を変更する
delay : 指定した時間プログラムを待機 1000分の1秒で指定可能
pos変数を+1して0⇒180まで移動したら-1して180⇒0へと言う周波数を次々に変更する事でサーボの角度を変えていきます。delay を使う事で角度を変えるスピードを変更しています。指定しないとギュンギュン動きます。
ここまでの作業内容を動画にまとめてみました。
作業内容を動画にまとめましたので、ご覧ください。
まとめ
今回は傾きセンサーとサーボを使って動きを確認しました。
電子回路やプログラムを覚えていくためには、サンプルが動く所を見る、そして動きの原理を考えて理解する不可欠です。
どちらのモジュールをとても動きがあって面白い。
LEDが光る動作よりも動きがある分、遊び心がありますね。
サンプルの通りに実行すれば確実にうまくいくので、まずは動く所を見るようにしましょう。そして、プログラム側がどんな記述になっているかゆっくりでいいので確認するようにしましょう。
Arudinoボードで角度を検知する方法とサーボの角度を変える方法を学習しました。
初めて回路に挑戦する方には、今回のプログラム部分は難解かもしれませんが、慣れていく事の方が大事だったりするのでどんどん次の回路に挑戦していきましょう。