arduino センサーでLチカ

# arduinoの各種センサーでLチカ

LEDはオンボードLEDを使用する
各種コードは13番ピンがLEDと接続されているとする
テープLEDを点灯させる例も後述

## 超音波距離センサー
```
//　距離センサーからデータを取得
// 超音波の信号を2番ピンから出す
#define trigPin 2
// 超音波の反射を3番ピンから取得
#define echoPin 3
// LEDを13番ピンで使用
#define led 13

double duration = 0;
double distance = 0; // 距離データが入る

void setup() {
  Serial.begin(9600); // シリアルモニタを使用
  pinMode(trigPin, OUTPUT); // 2番ピンを出力に設定
  pinMode(echoPin, INPUT); // 3番ピンを入力に設定
  pinMode(led, OUTPUT); // ledを出力に設定
}
void loop() {
  digitalWrite(trigPin, LOW);
  digitalWrite(echoPin, LOW);
  delayMicroseconds(1);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);   
  duration = duration * 0.000001 * 34000 / 2; // 距離データをセンサから取得
  Serial.print(duration); // シリアルモニタに距離を表示
  Serial.println(" cm");
  if (duration < 30) { // もし30㎝以内なら
    digitalWrite(led, HIGH); // LEDを点灯
  } else { //　そうでなければ
    digitalWrite(led, LOW); // LEDを消灯
  }
  delay(100); // 0.1秒待機
}
```

超音波距離センサーの30センチ以内に入ったらオンボードのLEDが光る
if (duration < 30) の値を変えるとLEDの点灯する距離を変更できる


## 温度センサー

```
// 温度センサーでLEDを点灯させる
#include "DHT.h"

#define sensor 2 // センサーを2番ピンで使う
#define type DHT11 // 使うセンサーの種類を書く
#define led 13 // LEDを13番ピンで使用する

DHT dht(sensor, type);

void setup() {
  Serial.begin(9600); // シリアルモニタを使用
  dht.begin(); // 温度センサーを使用
  pinMode(sensor, INPUT); // センサーを入力に設定
  pinMode(led, OUTPUT); // センサーを出力に設定
}

void loop() {
  float temp = dht.readTemperature(); // 温度を取得
  Serial.print("温度：");
  Serial.print(temp);
  Serial.println("℃");
  if (temp > 28) { // もし温度が28度以上なら
    digitalWrite(led, HIGH); // LEDを点灯させる
  } else { // そうでなければ
    digitalWrite(led, LOW); // LEDを消灯
  }
  delay(1000); // 1秒待機
}
```

温度が28度以上になるとオンボードLEDが点灯する

## テープLED10個を点灯させる

```
//テープled点灯
#include <FastLED.h>
#define LED_PIN 7         //信号線の番号
#define NUM_LEDS 10       // 点灯させるLEDの個数
#define BRIGHTNESS 20      // LEDの明るさ
#define LED_TYPE WS2812B  // 使用するLEDのタイプ
#define COLOR_ORDER GRB

CRGB leds[NUM_LEDS];

void setup() {
  delay(1000);
  FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(BRIGHTNESS);
}

void loop() {
  for (int i = 0; i < NUM_LEDS; i++) {
    // 点灯させる色をRGB（赤、緑、青）で指定
    leds[i] = CRGB(255, 0, 255);  // マックス値が255
    FastLED.show();
  }
}
```

## 超音波距離センサーでテープLEDを点灯
```
//　距離センサーの条件でテープLEDを点灯
#include <FastLED.h>
#define trigPin 2  // 超音波の信号を2番ピンから出す
#define echoPin 3  // 超音波の反射を3番ピンから取得
#define led 7      // テープLEDを7番ピンで使用
#define led_num 10     // 使うLEDの数
#define brightness 20  // LEDの明るさ
#define led_type WS2812B
#define color_order GRB

CRGB leds[led_num];

double duration = 0;
double distance = 0;  // 距離データが入る

void setup() {
  Serial.begin(9600);        // シリアルモニタを使用
  pinMode(trigPin, OUTPUT);  // 2番ピンを出力に設定
  pinMode(echoPin, INPUT);   // 3番ピンを入力に設定
  pinMode(led, OUTPUT);      // ledを出力に設定
  FastLED.addLeds<led_type, led, color_order>(leds, led_num).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(brightness);
}
void loop() {
  digitalWrite(trigPin, LOW);
  digitalWrite(echoPin, LOW);
  delayMicroseconds(1);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  duration = duration * 0.000001 * 34000 / 2;  // 距離データをセンサから取得
  Serial.print(duration);                      // シリアルモニタに距離を表示
  Serial.println(" cm");
  if (duration < 30) {  // もし30㎝以内なら
    for (int i = 0; i < led_num; i++) {
      // 点灯させる色をRGB（赤、緑、青）で指定
      leds[i] = CRGB(100, 0, 0); // 赤を100,緑を0、青を0にしている
      FastLED.show();
    }
  } else {  //　そうでなければ
    for (int i = 0; i < led_num; i++) {
      // 点灯させる色をRGB（赤、緑、青）で指定
      leds[i] = CRGB(0, 0, 0); // 赤を0,緑を0、青を0にしている
      FastLED.show();
    }
  }
  delay(100);  // 0.1秒待機
}
```
センサーの30センチ以内に入ったらLEDを点灯させる


## 温度センサーでテープLEDを点灯
```
// 温度センサーでLEDを点灯させる
#include "DHT.h"
#include <FastLED.h>

#define sensor 2 // センサーを2番ピンで使う
#define type DHT11 // 使うセンサーの種類を書く
#define led 7 // テープLEDを7番ピンで使用する
#define led_num 10 // 使用するLEDの数
#define brightness 20 // LEDの明るさ
#define led_type WS2812B
#define color_order GRB

CRGB leds[led_num];
DHT dht(sensor, type);

void setup() {
  delay(1000);
  Serial.begin(9600); // シリアルモニタを使用
  dht.begin(); // 温度センサーを使用
  pinMode(sensor, INPUT); // センサーを入力に設定
  pinMode(led, OUTPUT); // センサーを出力に設定
  FastLED.addLeds<led_type, led, color_order>(leds, led_num).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(brightness);
}

void loop() {
  float temp = dht.readTemperature(); // 温度を取得
  Serial.print("温度：");
  Serial.print(temp);
  Serial.println("℃");
  if (temp > 28) { // もし温度が28度以上なら
    for (int i = 0; i < led_num; i++) {
    // 点灯させる色をRGB（赤、緑、青）で指定
    leds[i] = CRGB(100, 0, 0);  // 赤100、緑0、青0
    FastLED.show();
  }
  } else { // そうでなければ
    for (int i = 0; i < led_num; i++) {
    // 点灯させる色をRGB（赤、緑、青）で指定
    leds[i] = CRGB(0, 0, 0);  // 赤0、緑0、青0
    FastLED.show();
  }
  }
  delay(1000); // 1秒待機
}
```

## 超音波センサー複数条件
```
//　距離センサーの条件でテープLEDを点灯
#include <FastLED.h>
#define trigPin 2  // 超音波の信号を2番ピンから出す
#define echoPin 3  // 超音波の反射を3番ピンから取得
#define led 7      // テープLEDを7番ピンで使用
#define led_num 10     // 使うLEDの数
#define brightness 20  // LEDの明るさ
#define led_type WS2812B
#define color_order GRB

CRGB leds[led_num];

double duration = 0;
double distance = 0;  // 距離データが入る

void setup() {
  Serial.begin(9600);        // シリアルモニタを使用
  pinMode(trigPin, OUTPUT);  // 2番ピンを出力に設定
  pinMode(echoPin, INPUT);   // 3番ピンを入力に設定
  pinMode(led, OUTPUT);      // ledを出力に設定
  FastLED.addLeds<led_type, led, color_order>(leds, led_num).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(brightness);
}
void loop() {
  digitalWrite(trigPin, LOW);
  digitalWrite(echoPin, LOW);
  delayMicroseconds(1);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  duration = duration * 0.000001 * 34000 / 2;  // 距離データをセンサから取得
  Serial.print(duration);                      // シリアルモニタに距離を表示
  Serial.println(" cm");
  if (duration < 30) {  // もし30㎝以内なら
    for (int i = 0; i < led_num; i++) {
      // 点灯させる色をRGB（赤、緑、青）で指定
      leds[i] = CRGB(100, 0, 0); // 赤を100,緑を0、青を0にしている
      FastLED.show();
    }
  }
  if (duration < 50) {  // もし50㎝以内なら
    for (int i = 0; i < led_num; i++) {
      // 点灯させる色をRGB（赤、緑、青）で指定
      leds[i] = CRGB(100, 0, 0); // 赤を100,緑を0、青を0にしている
      FastLED.show();
    }
  }
  delay(100);  // 0.1秒待機
}

```

## 温度センサー複数条件
```
// 温度センサーでLEDを点灯させる
#include "DHT.h"
#include <FastLED.h>

#define sensor 2       // センサーを2番ピンで使う
#define type DHT11     // 使うセンサーの種類を書く
#define led 7          // テープLEDを7番ピンで使用する
#define led_num 10     // 使用するLEDの数
#define brightness 20  // LEDの明るさ
#define led_type WS2812B
#define color_order GRB

CRGB leds[led_num];
DHT dht(sensor, type);

void setup() {
  delay(1000);
  Serial.begin(9600);      // シリアルモニタを使用
  dht.begin();             // 温度センサーを使用
  pinMode(sensor, INPUT);  // センサーを入力に設定
  pinMode(led, OUTPUT);    // センサーを出力に設定
  FastLED.addLeds<led_type, led, color_order>(leds, led_num).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(brightness);
}

void loop() {
  float temp = dht.readTemperature();  // 温度を取得
  Serial.print("温度：");
  Serial.print(temp);
  Serial.println("℃");
  if (temp > 28) {  // もし温度が28度よりも高ければ
    for (int i = 0; i < led_num; i++) {
      // 点灯させる色をRGB（赤、緑、青）で指定
      leds[i] = CRGB(100, 0, 0);  // 赤100、緑0、青0
      FastLED.show();
    }
  } else if (temp > 27) {  // もしも温度が30度よりも高ければ
    for (int i = 0; i < led_num; i++) {
      // 点灯させる色をRGB（赤、緑、青）で指定
      leds[i] = CRGB(0, 100, 0);  // 赤0、緑100、青0
      FastLED.show();
    }
  } else { // それ以外の時
    for (int i = 0; i < led_num; i++) {
      // 点灯させる色をRGB（赤、緑、青）で指定
      leds[i] = CRGB(0, 0, 0);  // 赤0、緑0、青0
      FastLED.show();
    }
  }
  delay(1000);  // 1秒待機
}

```