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