1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

arduino センサーでLチカ

Last updated at Posted at 2025-01-18

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秒待機
}

1
2
1

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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?