LoginSignup
0
0

More than 3 years have passed since last update.

Arduino + Grove (2)

Last updated at Posted at 2019-09-21

前回記事の最後では
「押している時」「押していない時」をLEDの「点灯」「消灯」と対応付けるコードを書きました
「デジタル入力によって、デジタル出力をコントロール」してみたのですが
今回は、ゼロとイチでは割り切れない別のセンサを使ってみましょう

ボリュームセンサでLEDの明るさコントロール

A0にボリュームセンサを接続します(D2のボタンは抜く)
IMG_1783.JPG

ArduinoIDEで「ファイル」→「新規ファイル」を開き
下記のコードをコピー、ペーストしてSeeduinoに書き込みます

const int volumePin = A0; //ボリュームセンサが刺さっているピンを指定
const int ledPin = 3; //LEDが刺さっているピンを指定

void setup() {
  Serial.begin(9600); //コンピュータとのシリアル通信の開始
  pinMode(volumePin, INPUT); //ボリュームセンサが接続されているピンを入力モードに
  pinMode(ledPin, OUTPUT); //LEDが接続されているピンを出力モードに

}

void loop() {
  int volumeVal = analogRead(volumePin); //volumeValという変数を指定し、ボリュームセンサの値を読む

  Serial.println(volumeVal); //0 - 1023の間でアナログ値を出力(10bit)
  int ledBrightness = map(volumeVal, 0, 1023, 0, 255); //0 - 1023の値を、LEDの明るさ0 - 255に変換する
  analogWrite(ledPin, ledBrightness); //指定された明るさでLEDを点灯

}

ボリュームを回転させるとLEDの明るさが変わります

プログラム解説

プログラム中にmap()という関数が出てきます。
analogRead()関数で取得するボリュームの値は10bit(0-1023)なのに対して、
LEDの明るさを制御しているanalogWrirte()が対応しているのが
8bit(0-255)なのでmap()を使って値を変換しています

シリアルプロッタで値を見てみる

ArduinoIDEの「ツール」→「シリアルプロッタ」を選択
スクリーンショット 2019-09-21 12.43.09.png

ボリュームを回転させると値に応じてグラフが変化します!
※シリアルプロッタが動作しない方は画面下部のボーレート(seeeduinoとPCが通信する速度の取り決め)を「9600bps」に設定してみてください!
Graph.png

PWM出力について

LEDの明るさを段階的にコントロールできるのは、Arduinoが持つPWMという出力方式のおかげです
PWMは(Pulse Width Modulation)の頭文字をとった略語で、単位時間あたりで電流を流す(ピンをHIGHにする)時間を変えているのです
実際にはピンのON/OFFが高速に切り替わっており、LEDは高速で明滅しているのですが、人間の目には「明るさが変わっているようにみえる」のです

スクリーンショット 2019-09-21 14.29.43

図の引用元

様々なセンサ・アクチュエータ

入力装置としての役割を持つセンサ(ボリューセンサ、ボタン)
出力装置としての役割を持つアクチュエータ(LED、傾きスイッチなど)には沢山の種類があります
上のプログラムに対応したセンサは下記になります。A0に接続して試してみましょう
その際、ArduinoIDEのシリアルプロッタを表示しておいて、どのような振る舞いによって値が変化するのかを確認してみましょう

  1. スライドセンサーSliding1
  2. CDS(明るさをセンシング)img
  3. FSR(圧力をセンシング)

main

また、上のプログラムは「振動モータ」にも対応していますので、D3に接続してセンサでコントロールしてみましょう

Grove - Vibration Motor

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0