初歩の電子工作とデジカメの日記

電子工作備忘録とデジカメで撮影した写真のブログです。

Arduino備忘録 12 (温度センサー (LM35DZ) を使う)

2016-07-28 21:32:47 | Arduino Uno
今回は温度センサー (LM35DZ) を使ってシリアルモニターに温度 (室温)を表示します。また室温が摂氏29度以上の場合はLEDが点滅します。


回路はシンプルで 次の通りに結線する

  • センサー Vcc ー Arduino +5V
  • センサー GND ー Arduino GND
  • センサー Vout ー Arduino A0
  • Arduino D13P ー R 330Ω ー LED ー GND


ブレッドボードに部品を配置、Arduino と結線する



スケッチはこちらの記事を参考にさせてもらった

/* 温度センサーの値をシリアルモニタに表示する
* 29度以上ならLEDが点滅する
*/
int sensorPin = A0; //センサーの入力はアナログ0番ピンを指定
int sensorValue = 0; // 初期設定
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600); //シリアルモニタに表示する通信速度の設定
}

void loop() {
sensorValue = analogRead(sensorPin); //アナログ0番ピンからの入力値を取得
float temp = modTemp(sensorValue); //温度センサーからの入力値を変換
Serial.println(temp); //結果をシリアルモニタに表示
delay(500); //0.5秒ウェイト

}
//アナログ入力値を摂氏度℃に変換
float modTemp(int analog_val){
float v = 5; // 基準電圧値( V )
float tempC = ((v * analog_val) / 1024) * 100; // 摂氏に換算
if (tempC > 29) {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
} else {
digitalWrite(13, LOW);
}
return tempC;
}


シリアルモニターの表示数値
図中赤ラインの時センサーを指で握って暖めたので摂氏29度以上となり、LEDが点滅した。



温度センサー (LM35DZ) を使う

Arduino備忘録 11 (3ledの点灯をCDSセルのアナログイン数値で切替える)

2016-07-26 16:40:24 | Arduino Uno
CDSセルの機能、性質がわかった(?)のでいよいよLEDを接続して暗くなったらLEDが点灯するArduino電子工作をやります
LEDが1個では単調なので3個のLEDを使いました


図中の右端のCDSセルからのアナログイン数値をArduino A0ポートに取り込み、3個のLEDの点灯を切替えます。
LEDの色は赤、青、緑です。



CDSセル、赤、青、緑色LED、抵抗(1kΩx4本)をブレッドボードに配置、Arduinoと結線します
LED出力ピンは
d11p・・・緑色LED
d12p・・・青色LED
d13p・・・赤色LED



CDSセルからのアナログイン数値で3個のLEDの点灯が切り替わるスケッチです。
アナログイン数値を可視化できるようにシリアルモニターも使えるようにしています。
スケッチはこちらの記事をお手本にしています。

/* CDSセル(光センサー)で読み込んだアナログ入力値の大きさでLEDの点灯を切替える
* アナログ入力値はシリアルモニターに表示させる
*/
const int red_LED = 13; // 赤LEDが接続されているピン
const int blue_LED = 12; // 青LEDが接続されているピン
const int green_LED = 11; // 緑LEDが接続されているピン


int val = 0; // アナログ入力ピンの状態がこの変数(val)に記憶される
int state = 0; // LEDの状態(0ならオフ、1ならオンとする)

void setup() {
pinMode(red_LED, OUTPUT); // LEDを出力に設定
pinMode(blue_LED, OUTPUT);
pinMode(green_LED, OUTPUT);
Serial.begin(9600); // シリアルモニターを使う

}

void loop() {
val = analogRead(0); //センサから値を取得します
Serial.println(val); // シリアルモニターに数値(val)を出力
if(val <= 900){ // valが900以下なら点灯しない
state=0;
}
if(val > 900 && val <=950){ // valが900-950の間では赤色LEDが点灯する
state=1;
}
if(val > 950 && val <= 1000){ // valが950-1000の間では青色LEDが点灯する
state=2;
}
if(val > 1000){ // valが1000以上では緑色LEDが点灯する
state=3;
}

//変化があるかどうかチェック

if (state == 0) {
digitalWrite(red_LED, LOW);
digitalWrite(blue_LED, LOW);
digitalWrite(green_LED, LOW);
} else if (state == 1) {
digitalWrite(red_LED, HIGH);
digitalWrite(blue_LED, LOW);
digitalWrite(green_LED, LOW);
} else if (state == 2) {
digitalWrite(red_LED, LOW);
digitalWrite(blue_LED, HIGH);
digitalWrite(green_LED, LOW);
} else if (state == 3) {
digitalWrite(red_LED, LOW);
digitalWrite(blue_LED, LOW);
digitalWrite(green_LED, HIGH);
}
delay(100);

}


CDSセルからのアナログイン数値(val)が900以下では、どのLEDも点灯しません。valの値が900以上、950以下で赤色LEDが点灯します。


valの値が950以上、1000以下で青色LEDが点灯します。


valの値が1000以上なら緑色LEDが点灯します。


Arduino備忘録 11

Arduino備忘録 10 (光センサーでアナログ入力)

2016-07-24 12:53:32 | Arduino Uno
LEDメインのArduino電子工作はひとまず完了として、今回からセンサーを扱ってみます。最初は光センサー(CDSセル)を取り扱ってみます。


光センサーの性質を確認する回路、Arduinoは使わない。
光センサー(通称CdSセル)は、暗いところにおくとセンサー自体の抵抗値が大きくなり、明るいところに置くとセンサーの抵抗値が低くなる性質を持っている。
この回路ではCDSセルを何かで覆うと抵抗値が高くなり接続されているLEDの明るさは暗くなる


ArduinoでCDSセルの抵抗値の変化を確かめる回路。
[analog in]のポートは[A0]ピンを使用した。





// CDSセルの抵抗値をA0ピンで読み込み、シリアルモニターに出力する
int val=0; //入力される値を格納する変数
void setup() {
Serial.begin(9800); //シリアルモニターに出力する通信速度(Arduinoと同じ速度)
}
void loop() {
val=analogRead(0); //ANALOG INの0番ピンからデータを受け取る
Serial.println(val/4); //入力された値をシリアルモニターに出力
delay(100);

}


CDSセルを何かで覆うと抵抗値は高くなる。CDSセルの部分を明るくすると抵抗値は低くなる


Arduino備忘録 9 (4ledへPWM出力)

2016-07-23 07:20:13 | Arduino Uno
PWM出力の2回目です。
4個のLEDへPWM出力してLEDが順にだんだんと明るくなり、そして暗くなります。


ArduinoのPWM出力ができるD5,D6,D9,D10ピンにLEDを接続する回路を組みます。



ブレッドボードにLED,集合抵抗(220Ωx8)を配置し、Arduinoと結線。



スケッチはこちらの記事を使用させていただきました。


/* PWM出力で4個のLEDを制御する */
#define FADE_TIME 2 // フェードの時間を設定

int led_pins[] = {5,6,9,10}; // LEDをつなぐピンを定義。配列を使っています。

void setup() {
int i; // 変数 i を用意

for(i=0;i<4;i++){
pinMode(led_pins[i], OUTPUT); // LEDのピンに出力
}</div>
}

void loop() {
int i,j;

//LED1を暗から明へフェードする
for(j=0;j<4;j++){
for(i=0;i<256;i++){
analogWrite(led_pins[j], i);
delay(FADE_TIME);
}
}

//LED1を明から暗へフェードする
for(j=0;j<4;j++){
for(i=255;i>-1;i--){
analogWrite(led_pins[j], i);
delay(FADE_TIME);
}
}

}


4ledへpwm出力

Arduino備忘録8 (PWM出力でLEDの明るさ漸増、漸減)

2016-07-22 11:34:01 | Arduino Uno
Arduino Unoでは3、5、6、9、10、11ピンを使用してPWM(パルス幅変調)出力ができる。
9ピンで確認してみる


回路は簡単で、D9ピンをPWM出力ピンとしてLEDにパルス信号を送ります。



スケッチはArduino IDEの[ファイル]→[スケッチの例]→[03.Analog]→[Fading]


int ledPin = 9; // LED connected to digital pin 9

void setup() {
// nothing happens in setup(何も書かない)

}

void loop()
{
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPin, fadeValue);
delay(30);
}

for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPin, fadeValue);
delay(30);
}

}


PWM出力でLEDの明るさがだんだん明るくなる(or暗くなる)

Arduino備忘録7 (半固定抵抗器でAnalogIn-2-)

2016-07-21 10:55:43 | Arduino Uno

前回の半固定抵抗器を使ってAnalog入力の数値を読み取る電子工作を応用して4個のLEDを順番で点灯していく工作です


以前にも使用の集合抵抗(220Ωx8)を使った回路です。Arduino の A0ポートで半固定抵抗器のアナログ数値を読み込みます。



スケッチはこちらの記事を使用しました

/* 半固定抵抗器からのアナログ数値の変化を読み取って
* 4個のLEDの点灯が移り変わるスケッチ
*/

int sensorPin = A0; // 半固定抵抗器の電圧を読み取るアナログポート
int ledPin1 = 13; // LED1番目のポート
int ledPin2 = 12; // LED2番目のポート
int ledPin3 = 11; // LED3番目のポート
int ledPin4 = 10; // LED4番目のポート
int sensorValue = 0; // センサー初期値は0

void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);

}

void loop() {
sensorValue = analogRead(sensorPin);
if (sensorValue>204) {
digitalWrite(ledPin1, HIGH);
}
else {
digitalWrite(ledPin1, LOW);
}
if (sensorValue>408) {
digitalWrite(ledPin2, HIGH);
}
else {
digitalWrite(ledPin2, LOW);
}
if (sensorValue>612) {
digitalWrite(ledPin3, HIGH);
}
else {
digitalWrite(ledPin3, LOW);
}
if (sensorValue>816) {
digitalWrite(ledPin4, HIGH);
}
else {
digitalWrite(ledPin4, LOW);
}


}


ブレッドボードにLED、半固定抵抗器、集合抵抗、を配置し、Arduinoと結線します。



半固定抵抗器でAnalogIn-2-

Arduino備忘録6 (半固定抵抗器でアナログイン)

2016-07-19 12:14:18 | Arduino Uno
LED点滅の間隔を変化させるために半固定抵抗器を使い、AnalogInの数値をスケッチに取り込みます。


Vr-led回路図
LED点滅間隔を変化させるために半固定抵抗器を使用します。抵抗器からのアナログ数値の変化を読み取ってLEDの点滅間隔が変わります。



スケッチはArduino IDEの[ファイル]→[スケッチの例]→[03.Analog]→[AnalogInput]を使用します



/* LED点滅間隔が半固定抵抗器からのアナログ数値の変化を読み取って
* 変わるスケッチ
*/

int sensorPin = A2; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the sensor

void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);

}

void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);

}


ブレッドボードを使って部品配置およびArduinoとの配線画像





LED点滅間隔を半固定抵抗器で変化させる(アナログイン)

Arduino備忘録5 (タクトスイッチでLEDを点滅させる)

2016-07-18 12:00:41 | Arduino Uno
タクトスイッチのON-OFFでLEDの点灯、消灯を切り替えるArduino電子工作です


回路図作成ソフトは[Bsch3v]を使用しています
タクトスイッチのON-OFを切替えることで接続されているLEDが点滅する回路図です



スケッチはArduino IDEの[ファイル]→[スケッチの例]→[02.digital]→[Button]を利用します



/* タクトスイッチでLEDを点滅させるスケッチ
*/

const int buttonPin = 2;
const int ledPin = 13;

int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);

}

void loop() {
buttonState = digitalRead(buttonPin);

if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}

}


tact sw led

Arduino備忘録4 (8LEDの順送り点灯)

2016-07-15 11:11:39 | Arduino Uno
2個のLED交互点灯スケッチの応用で今回は8個のLEDが順送りで点灯するArduino電子工作です。


在庫品に8Pの集合抵抗器があったので使っています。抵抗値は220Ωx8pです。



// 8LED順送り点灯スケッチ・・・ナイトライダー?

void setup() {
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(10, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);

}

void loop() {
digitalWrite(13, LOW);
digitalWrite(2, HIGH);
delay(150);
digitalWrite(2, LOW);
digitalWrite(4, HIGH);
delay(150);
digitalWrite(4, LOW);
digitalWrite(6, HIGH);
delay(150);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
delay(150);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
delay(150);
digitalWrite(8, LOW);
digitalWrite(10, HIGH);
delay(150);
digitalWrite(10, LOW);
digitalWrite(12, HIGH);
delay(150);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
delay(150);

}


8led nightrider

動画でArduino本体の下に映っているのはモバイルバッテリーです。(ANKER製)
Arduinoはスケッチの書き込みが完了したら、別電源が取ればPCとのUSB接続をはずしてもOKです。





Arduino備忘録3 (2LED交互点灯)

2016-07-14 10:25:23 | Arduino Uno
前回LEDを2個使って同時点滅の回路をやったので、今回は2個のLEDが交互に点灯するArduino電子工作です。


2個のLEDが交互に点灯する回路図



// 2個のLEDが交互に点灯するスケッチ

void setup() {
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);

}

void loop() {
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
delay(1000);

}


2led change