見出し画像

Arduinoの電子工作で遊ぼう! その35 ~タッチセンサーを作ってみよう2~

(前回からの続きです)

今回はサードパーティのライブラリを使いますので、その準備からおこないます

① 下記のサイトから、CapacitiveSensorライブラリをダウンロードします

 

  CapacitiveSensor-master.zipファイルをダウンロードします。

② Arduino IDEにインストールします

1)「スケッチ」-「ライブラリをインクルード」-「ZIP形式のライブラリをインストール」を選択
2)ダウンロードしたライブラリファイルを選択します

以上で、ライブラリの準備が完了です

それでは、プログラムを見てみましょう

このプログラムでは、タッチセンサーでLEDを点灯させます。

#include <CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(4,2);
int threshold = 1000;
const int ledPin = 12;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  long sensorValue = capSensor.capacitiveSensor(30);
  Serial.println(sensorValue);
  if(sensorValue > threshold){
    digitalWrite(ledPin, HIGH);
  }
  else{
    digitalWrite(ledPin, LOW);
  }
  delay(10);
}

1.ライブラリのインクルードと変数の宣言

#include <CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(4,2);
int threshold = 1000;
const int ledPin = 12;
  • #include <CapacitiveSensor.h>:CapacitiveSensorライブラリをインクルードします。このライブラリは静電容量センサーを簡単に扱うためのもので、タッチや近接を検出することができます。

  • CapacitiveSensor capSensor = CapacitiveSensor(4,2);:センサーを4番ピンと2番ピンに接続して利用する設定です。最初の引数(4)が「送信」ピンで、次の引数(2)が「受信」ピンです。

  • int threshold = 1000;:この閾値(しきいち)は、タッチや近接があったと見なすための基準値です。

  • const int ledPin = 12;:LEDが接続されているピンを指定します。このプログラムでは12番ピンが使われます。

2.setup()関数

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}
  • Serial.begin(9600);:シリアル通信を9600bpsで開始します。Serial.println()でセンサーの値を表示するために使います。

  • pinMode(ledPin, OUTPUT);:12番ピン(ledPin)を出力モードに設定します。これにより、LEDのオン・オフができるようになります。

3.loop()関数

void loop() {
  long sensorValue = capSensor.capacitiveSensor(30);
  Serial.println(sensorValue);
  if(sensorValue > threshold){
    digitalWrite(ledPin, HIGH);
  }
  else{
    digitalWrite(ledPin, LOW);
  }
  delay(10);
}
  • long sensorValue = capSensor.capacitiveSensor(30);:capacitiveSensor()関数は、静電容量を測定して静電容量の値を返します。引数の30は読み取り回数を表しており、回数を多くすると精度が高くなる代わりに速度が遅くなります。

  • Serial.println(sensorValue);:センサーの値をシリアルモニタに出力して表示します。この値を使って、しきい値(threshold)を超えたかどうかを判定します。

  • if(sensorValue > threshold) { ... } else { ... }:センサー値がしきい値を超えた場合にLEDを点灯し、そうでない場合は消灯します。

  • delay(10);:10ミリ秒の遅延を入れ、センサーの読み取りが過剰にならないようにします。

それでは、試してみましょう

 

アルミホイルの部分を触ってみます


 

LEDが点灯しました!
成功です!

この記事が気に入ったらサポートをしてみませんか?