Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」 | PDF
[go: Go Back, main page]

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
AITCシニア技術者勉強会 第二回
センサーに反応する
総天然色イルミネーションを
作ってみよう!
2016年12月21日
先端IT活用推進コンソーシアム
クラウド・テクノロジー活用部会 リーダー
アドソル日進株式会社 荒本道隆
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
本日のゴール
• 息を吹きかけたら消えるLEDを作ってみる
2
http://makezine.jp/blog/2016/11/make-an-led-candle-you-can-blow-out.html
・しかもカラフルに
・他でも使えそう感
・ガワは、帰ってから
風センサの入手が難しいので、
マイクで代用
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
前回の復習
ベースとして、P17の構成を使います
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
Arduino とは
Arduino はスタンドアロン型のインタラクティブデバイス開発だけでなく、ホスト
コンピュータ上のソフトウェア(例えば、Adobe Flash、Processing、Max/MSP、
Pure Data、SuperCollider)で制御することもできる。オープンソースハード
ウェアでありハードウェア設計情報のEAGLEファイルは無料で公開されてお
り、組み立て済みの基板を購入することもできるほか、誰でも自分の手で
Arduino を組み立てることができる。
Arduinoプロジェクトは2005年にイタリアで 始まり、当時入手可能だった他の
学生向けのロボット製造用コントロールデバイスよりも安価なプロトタイピン
グ・システムを製造することを目的にスタートし た。設計グループは多くの競
合製品よりも遥かに安価で簡単に使用できるプラットフォームの開発に成功し
た。Arduinoボードは、2008年10月までに5万ユニット以上[3]が、2011年2月
で約15万台[4]販売されている。Arduinoプロジェクトは2006年度のアルス・エ
レクトロニカ賞で名誉言及を受けている。[5][6][7]
ウィキペデアより
4
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
Arduinoの特徴
• アナログ・デジタルの入出力が複数ある
– そこにセンサやリレーを簡単に接続できる
• 豊富なシールド
– イーサネット, GPS, LCD, モーター制御
– http://ideahack.me/article/147
• センサ以外は、使い慣れた技術・用語が多い
– USB, シリアル, HTTP, TCP/IP
• 取り扱いが容易
– 不器用な私でも何とかなった
• 無線シールドの半田付けに失敗し、3つほど捨てたけど
– そんなに高くない
• 壊してしまっても、大人なら平気
色々と追加すると、
Raspberry PI の方が
安上がりな場合も
5
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
機器購入時の注意事項
• 無線LAN, Bluetoothは、技適が付いているか?
– 海外の無線シールドには、技適が付いていない
– 技適が付いていないものを使うデメリット
• 発表時に、構成を詳しく言えない
• 電波法違反=「1年以下の懲役又は100万円以下の罰金刑に処せ
れる」
– 有線→無線変換が簡単
• 配置時
– 電源の確保
• スマホの充電で使うUSBアダプタが大活躍
• センサだけなら、電池でも結構持つ
– 無線LANを電池で使いたいなら、省電力のものを選択
6
Amazon「PLANEX 充電万能
2ポートUSB充電器 ホワイト」
¥1,002-
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
Arduinoの概要
デジタル入出力(プログラムで切り替え)
アナログ入力(0~1023の範囲)電源
出力にすると
5V, 40mA
7
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
ブレッドボードの概要
+-だけ縦に
つながっている
横に
つながっている
GND 5V
8
横に
つながっている
a~e, f~j
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
プロトタイピング
開発時
テスト配置時
9
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
注意事項
• 回路変更時には、必ず電源を抜く
• 抵抗値の計算について
– よく分からなければ、計算用サイトを利用
• http://diy.tommy-bright.com/
• Arduinoの電流量は貧弱
– 5V, 40mA
• 比較例:単三電池は1.5V, 100mA
– サーボモータなど大電流が必要な物は、別電源が必要
• 24時間運転する場合は
– ちゃんとケースに入れましょう
10
http://d.hatena.ne.jp/koki-
h/comment/20090407/1239090406
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
ドライバと開発環境をインストール
• ダウンロード
– http://arduino.cc/en/main/software
• Windows
– 「Windows ZIP file」をダウンロードして、解凍
– drivers¥arduino.inf を右クリックして「インストール」
– Arduino を接続
– arduino.exe でIDEを起動
– メニューの「ツール」から
• →「シリアルポート」→「COM3」(PCによって違う)を選択
• →「マイコンボード」→「Arduino Uno」を選択
• Mac
– 「Mac OS X」をダウンロードして、解凍
– Arduino を接続
– arduino でIDEを起動
– メニューの「ツール」から
• →「シリアルポート」→「/dev/tty.usbmodem3d11」を選択
• →「マイコンボード」→「Arduino Uno」を選択
11
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
練習問題
• LEDを点ける
– 状況が目視できるようになる
5VとGND
を取り出す 5V側に抵抗
を入れる
足の長い方が+
挿し易いように、カット済み
LEDの仕様で
抵抗値は違う
抵抗無しだと
焼き切れる事も
12
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
ステップ1-1
• LEDを1秒ごとに点滅させる
– デジタルの8番をLEDの+に接続
• さっきまでの5Vの線は外す
デジタルの8番
13
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
• LEDを1秒ごとに点滅させる
– 次にプログラムを作成
1.コンパイル
2.書き込み
ちょっと発展形
ステップ1-2
おまけ
高速に点灯と消灯を
繰り返せば、明るさ
を調節できる
#define LED_OUTPUT 8
boolean led = false;
void setup() {
pinMode(LED_OUTPUT, OUTPUT);
}
void loop() {
led = !led; // 反転
digitalWrite(LED_OUTPUT, led);
delay(1000);
}
書き込んだら、
自動で実行開始
14
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
ステップ2-1
• 照度センサの値をPCで参照
– 照度センサをアナログの0番に入力
• 足の短い方:5V
• 足の長い方:GND→抵抗→、A0に渡す
セ
ン
サ
A0へ入力
15
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
ステップ2-2
• 照度センサの値をPCで参照
– プログラムを作成
– 実行後は、「ツール」→「シリアルモニタ」で確認
#define LED_OUTPUT 8
#define CDS_INPUT 0
boolean led = true;
void setup() {
Serial.begin(9600);
}
void loop() {
int val = analogRead(CDS_INPUT);
Serial.print ("CdS :");
Serial.print (val);
Serial.println();
delay(1000);
}
16
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
ステップ3
• 「暗くなったら、LEDを灯す」を実現
– ステップ2のプログラムを改良
#define LED_OUTPUT 8
#define CDS_INPUT 0
boolean led = LOW;
void setup() {
pinMode(LED_OUTPUT, OUTPUT);
// Serial.begin(9600);
}
void loop() {
int val = analogRead(CDS_INPUT);
if (val < 400){ // 暗ければ
led = HIGH; // 点ける
} else { // そうでなければ、
led = LOW; // 消す
}
digitalWrite(LED_OUTPUT, led);
delay(100); // 反応の遅延を減らす
}
閾値は、場所に合わせて調整
17
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
マイク、距離センサー
を使ったLEDの操作
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
距離センサ
• シャープ距離モジュール
– 測定したい距離によって、数種類ある
• 10~80cm、20~150cm、1~5.5m
– 各ピンの説明
• 白色:距離出力 → アナログ0番へ接続して、LED操作
• 赤色:クランド
• 黒色:電源入植(DC5V)
19
色が常識と違うっ!!
http://akizukidenshi.com/catalog/g/gI-02551/
抵抗は不要
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
マイク
• アナログサウンドセンサモジュール
– アンプが実装されているので、取り扱いが簡単
• 注意:アンプが無いモノは扱いが難しいので注意
– 各ピンの説明
• 青色:音声出力 → アナログ0番へ接続して、LED操作
• 赤色:電源入力(DC5V)
• 黒色:グランド
20
めいっぱい右に回す
http://akizukidenshi.com/catalog/g/gM-07038/
抵抗は不要
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
マイク用の工夫
• 音に反応したら、1秒間、LEDを点灯させる
– 課題:逆にして、音に反応して消灯させる
void setup() {
pinMode(8, OUTPUT);
Serial.begin(9600);
}
int count = 0;
void loop() {
int val = analogRead(0);
Serial.println (val);
if (val > 10) { // 一定以上の音なら
count = 100; // LEDを点灯させておく時間
}
if (count > 0) {
digitalWrite(8, HIGH); // 点灯
count--;
} else {
digitalWrite(8, LOW); // 消灯
}
delay(10);
}
閾値は、調整
21
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
フルカラーLEDを使った
色の作成
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
フルカラーLED
• マイコン内蔵RGB LED
– 様々な形状のものがあり、RGB値で好きな色を作れる
• 複数を数珠つなぎにできる
– 沢山のLEDを使う場合、5VとGNDを別電源から取る
– Arduinoの電力が足りなくなると、動作が不安定になる
23
http://akizukidenshi.com/catalog/g/gI-08411/
1つの場合、使うピン
4:DIN:コマンド入力
3:VCC:5V
1:GND:GND
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
フルカラーLEDを使う準備
• ライブラリをダウンロード
– 使用するライブラリは、LEDによって違うので注意
– ダウンロード先
• https://github.com/adafruit/Adafruit_NeoPixel
• 「Clone or download」→「Download ZIP」
• 開発環境に追加
– 「スケッチ」→「ライブラリをインクルード」
→「ZIP形式のライブラリをインストール」→ファイルを指定
• コントロールは、デジタル8番ピンを使用
#define PIN 8
24
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
フルカラーLEDを点灯-1
• 0.5秒間隔に、点灯、消灯を繰り返す
– 課題:RGBの組み合わせで、好きな色を作成
#include <Adafruit_NeoPixel.h>
#define PIN 8
#define NUMPIXELS 5
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800);
void setup() {
Serial.begin(9600);
Serial.println ("START");
pinMode(13, OUTPUT); digitalWrite(13, HIGH); // DIGITAL13を5Vとして使用
pixels.begin(); // This initializes the NeoPixel library.
}
void loop() {
// 点灯
pixels.setPixelColor(0, pixels.Color(150, 0, 0)); // RED
pixels.setPixelColor(1, pixels.Color( 0, 150, 0)); // GREEN
pixels.show(); // 反映
delay(500); // ちょっと間をあける
pixels.clear(); // 消灯
pixels.show(); // 反映
delay(500); // ちょっと間をあける
}
25sample1.txt
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
フルカラーLEDを点灯-2
• 色をランダムに変える
#include <Adafruit_NeoPixel.h>
#define PIN 8
#define NUMPIXELS 5
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB +
NEO_KHZ800);
void setup() {
Serial.begin(9600);
Serial.println ("START");
pinMode(13, OUTPUT); digitalWrite(13, HIGH); // DIGITAL13を5Vとして使用
pixels.begin(); // This initializes the NeoPixel library.
}
void loop() {
// ランダムで点灯
for (int i = 0; i < NUMPIXELS; i++) {
int c = random(1,8); // ランダムで1-7を発生させる
pixels.setPixelColor(i, pixels.Color((c&1)*150, (c&2)*150, (c&4)*150));
}
pixels.show();
delay(500); // ちょっと間をあける
}
26
sample2.txt
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
フルカラーLEDを点灯-3
• 炎を表現してみる
#include <Adafruit_NeoPixel.h>
#define PIN 8
#define NUMPIXELS 5
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB +
NEO_KHZ800);
void setup() {
Serial.begin(9600);
Serial.println ("START");
pinMode(13, OUTPUT); digitalWrite(13, HIGH); // DIGITAL13を5Vとして使用
pixels.begin(); // This initializes the NeoPixel library.
}
void loop() {
// 炎っぽさを表現
for (int i = 0; i < NUMPIXELS; i++) {
int c = random(10,100); // ランダムで10-99を発生させる
pixels.setPixelColor(i, pixels.Color(c, 0, 0)); // 赤だけ使用
}
pixels.show();
delay(random(10,100)); // 間隔もランダムで
}
27
sample3.txt
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
センサー+フルカラーLED
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
こんなモノを作ってみよう
• 距離センサー+フルカラーLED
– 距離を色と数で表現
• 近づくと警告
• 最適な距離を指示
• マイク+フルカラーLED
– 炎を表現。音があると消灯。リセットで復活
– 音があると点灯。一定時間経過で元の状態に戻る
– 過去最大音を色と数で表現
• LEDが複数あれば、直近、10秒前、20秒前、と使い分ける
– 拡張案:delay();の値を短くし、音の反応をよくする
29
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
マイク+フルカラーLED-1
• 過去最大音をLEDで表現
setup() までは省略
int max = 0;
void loop() {
int val = analogRead(0);
Serial.println (val);
if (val > max){
max = val;
}
if (max <= 10){
// 低い
int c = (max + 1) * 20;
pixels.setPixelColor(0, pixels.Color(0, 0, c)); // 青
} else if (max <= 20){
int c = (max-10+1) * 20;
pixels.setPixelColor(0, pixels.Color(c, c, 0)); // 黄
} else {
int c = (max-20+1) * 20;
if (c > 255) c = 255;
pixels.setPixelColor(0, pixels.Color(c, 0, 0)); // 赤
}
pixels.show();
delay(10);
}
30sample4.txt
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
マイク+フルカラーLED-2
• イルミネーションを息で消す
int count = 0; // マイナスで消灯、プラスで点灯
void loop() {
int val = analogRead(0);
Serial.println (val);
if (val > 10){
count = -1000;
}
if (count < 0){
pixels.clear(); // 全部消す
pixels.show();
delay(5);
count++;
return;
}
if (count > 100){
for (int i = 0; i < NUMPIXELS; i++) {
int c = random(1,8); // ランダムで1-7を発生させる
pixels.setPixelColor(i, pixels.Color((c&1)*150, (c&2)*150, (c&4)*150));
}
pixels.show();
count = 0;
}
delay(5); // 反応を良くするため、小さい値にする
count++;
}
31
sample5.txt
閾値は、調整
「音で点灯」もやってみよう
「近づいたら点灯」もやって
みよう
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
後片付け
• 借りたものを返却してください
32
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
http://aitc.jp
https://www.facebook.com/aitc.jp
最新情報は
こちらをご参照ください
ハルミン
AITC非公式イメージキャラクター
使ってみたいセンサや
紹介できるセンサを
アンケートに書いてください。
次回は、新しいセンサーと
複数のフルカラーLEDを使います

2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」

  • 1.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. AITCシニア技術者勉強会 第二回 センサーに反応する 総天然色イルミネーションを 作ってみよう! 2016年12月21日 先端IT活用推進コンソーシアム クラウド・テクノロジー活用部会 リーダー アドソル日進株式会社 荒本道隆
  • 2.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 本日のゴール • 息を吹きかけたら消えるLEDを作ってみる 2 http://makezine.jp/blog/2016/11/make-an-led-candle-you-can-blow-out.html ・しかもカラフルに ・他でも使えそう感 ・ガワは、帰ってから 風センサの入手が難しいので、 マイクで代用
  • 3.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 前回の復習 ベースとして、P17の構成を使います
  • 4.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. Arduino とは Arduino はスタンドアロン型のインタラクティブデバイス開発だけでなく、ホスト コンピュータ上のソフトウェア(例えば、Adobe Flash、Processing、Max/MSP、 Pure Data、SuperCollider)で制御することもできる。オープンソースハード ウェアでありハードウェア設計情報のEAGLEファイルは無料で公開されてお り、組み立て済みの基板を購入することもできるほか、誰でも自分の手で Arduino を組み立てることができる。 Arduinoプロジェクトは2005年にイタリアで 始まり、当時入手可能だった他の 学生向けのロボット製造用コントロールデバイスよりも安価なプロトタイピン グ・システムを製造することを目的にスタートし た。設計グループは多くの競 合製品よりも遥かに安価で簡単に使用できるプラットフォームの開発に成功し た。Arduinoボードは、2008年10月までに5万ユニット以上[3]が、2011年2月 で約15万台[4]販売されている。Arduinoプロジェクトは2006年度のアルス・エ レクトロニカ賞で名誉言及を受けている。[5][6][7] ウィキペデアより 4
  • 5.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. Arduinoの特徴 • アナログ・デジタルの入出力が複数ある – そこにセンサやリレーを簡単に接続できる • 豊富なシールド – イーサネット, GPS, LCD, モーター制御 – http://ideahack.me/article/147 • センサ以外は、使い慣れた技術・用語が多い – USB, シリアル, HTTP, TCP/IP • 取り扱いが容易 – 不器用な私でも何とかなった • 無線シールドの半田付けに失敗し、3つほど捨てたけど – そんなに高くない • 壊してしまっても、大人なら平気 色々と追加すると、 Raspberry PI の方が 安上がりな場合も 5
  • 6.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 機器購入時の注意事項 • 無線LAN, Bluetoothは、技適が付いているか? – 海外の無線シールドには、技適が付いていない – 技適が付いていないものを使うデメリット • 発表時に、構成を詳しく言えない • 電波法違反=「1年以下の懲役又は100万円以下の罰金刑に処せ れる」 – 有線→無線変換が簡単 • 配置時 – 電源の確保 • スマホの充電で使うUSBアダプタが大活躍 • センサだけなら、電池でも結構持つ – 無線LANを電池で使いたいなら、省電力のものを選択 6 Amazon「PLANEX 充電万能 2ポートUSB充電器 ホワイト」 ¥1,002-
  • 7.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. Arduinoの概要 デジタル入出力(プログラムで切り替え) アナログ入力(0~1023の範囲)電源 出力にすると 5V, 40mA 7
  • 8.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. ブレッドボードの概要 +-だけ縦に つながっている 横に つながっている GND 5V 8 横に つながっている a~e, f~j
  • 9.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. プロトタイピング 開発時 テスト配置時 9
  • 10.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 注意事項 • 回路変更時には、必ず電源を抜く • 抵抗値の計算について – よく分からなければ、計算用サイトを利用 • http://diy.tommy-bright.com/ • Arduinoの電流量は貧弱 – 5V, 40mA • 比較例:単三電池は1.5V, 100mA – サーボモータなど大電流が必要な物は、別電源が必要 • 24時間運転する場合は – ちゃんとケースに入れましょう 10 http://d.hatena.ne.jp/koki- h/comment/20090407/1239090406
  • 11.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. ドライバと開発環境をインストール • ダウンロード – http://arduino.cc/en/main/software • Windows – 「Windows ZIP file」をダウンロードして、解凍 – drivers¥arduino.inf を右クリックして「インストール」 – Arduino を接続 – arduino.exe でIDEを起動 – メニューの「ツール」から • →「シリアルポート」→「COM3」(PCによって違う)を選択 • →「マイコンボード」→「Arduino Uno」を選択 • Mac – 「Mac OS X」をダウンロードして、解凍 – Arduino を接続 – arduino でIDEを起動 – メニューの「ツール」から • →「シリアルポート」→「/dev/tty.usbmodem3d11」を選択 • →「マイコンボード」→「Arduino Uno」を選択 11
  • 12.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 練習問題 • LEDを点ける – 状況が目視できるようになる 5VとGND を取り出す 5V側に抵抗 を入れる 足の長い方が+ 挿し易いように、カット済み LEDの仕様で 抵抗値は違う 抵抗無しだと 焼き切れる事も 12
  • 13.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. ステップ1-1 • LEDを1秒ごとに点滅させる – デジタルの8番をLEDの+に接続 • さっきまでの5Vの線は外す デジタルの8番 13
  • 14.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. • LEDを1秒ごとに点滅させる – 次にプログラムを作成 1.コンパイル 2.書き込み ちょっと発展形 ステップ1-2 おまけ 高速に点灯と消灯を 繰り返せば、明るさ を調節できる #define LED_OUTPUT 8 boolean led = false; void setup() { pinMode(LED_OUTPUT, OUTPUT); } void loop() { led = !led; // 反転 digitalWrite(LED_OUTPUT, led); delay(1000); } 書き込んだら、 自動で実行開始 14
  • 15.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. ステップ2-1 • 照度センサの値をPCで参照 – 照度センサをアナログの0番に入力 • 足の短い方:5V • 足の長い方:GND→抵抗→、A0に渡す セ ン サ A0へ入力 15
  • 16.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. ステップ2-2 • 照度センサの値をPCで参照 – プログラムを作成 – 実行後は、「ツール」→「シリアルモニタ」で確認 #define LED_OUTPUT 8 #define CDS_INPUT 0 boolean led = true; void setup() { Serial.begin(9600); } void loop() { int val = analogRead(CDS_INPUT); Serial.print ("CdS :"); Serial.print (val); Serial.println(); delay(1000); } 16
  • 17.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. ステップ3 • 「暗くなったら、LEDを灯す」を実現 – ステップ2のプログラムを改良 #define LED_OUTPUT 8 #define CDS_INPUT 0 boolean led = LOW; void setup() { pinMode(LED_OUTPUT, OUTPUT); // Serial.begin(9600); } void loop() { int val = analogRead(CDS_INPUT); if (val < 400){ // 暗ければ led = HIGH; // 点ける } else { // そうでなければ、 led = LOW; // 消す } digitalWrite(LED_OUTPUT, led); delay(100); // 反応の遅延を減らす } 閾値は、場所に合わせて調整 17
  • 18.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. マイク、距離センサー を使ったLEDの操作
  • 19.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 距離センサ • シャープ距離モジュール – 測定したい距離によって、数種類ある • 10~80cm、20~150cm、1~5.5m – 各ピンの説明 • 白色:距離出力 → アナログ0番へ接続して、LED操作 • 赤色:クランド • 黒色:電源入植(DC5V) 19 色が常識と違うっ!! http://akizukidenshi.com/catalog/g/gI-02551/ 抵抗は不要
  • 20.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. マイク • アナログサウンドセンサモジュール – アンプが実装されているので、取り扱いが簡単 • 注意:アンプが無いモノは扱いが難しいので注意 – 各ピンの説明 • 青色:音声出力 → アナログ0番へ接続して、LED操作 • 赤色:電源入力(DC5V) • 黒色:グランド 20 めいっぱい右に回す http://akizukidenshi.com/catalog/g/gM-07038/ 抵抗は不要
  • 21.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. マイク用の工夫 • 音に反応したら、1秒間、LEDを点灯させる – 課題:逆にして、音に反応して消灯させる void setup() { pinMode(8, OUTPUT); Serial.begin(9600); } int count = 0; void loop() { int val = analogRead(0); Serial.println (val); if (val > 10) { // 一定以上の音なら count = 100; // LEDを点灯させておく時間 } if (count > 0) { digitalWrite(8, HIGH); // 点灯 count--; } else { digitalWrite(8, LOW); // 消灯 } delay(10); } 閾値は、調整 21
  • 22.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. フルカラーLEDを使った 色の作成
  • 23.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. フルカラーLED • マイコン内蔵RGB LED – 様々な形状のものがあり、RGB値で好きな色を作れる • 複数を数珠つなぎにできる – 沢山のLEDを使う場合、5VとGNDを別電源から取る – Arduinoの電力が足りなくなると、動作が不安定になる 23 http://akizukidenshi.com/catalog/g/gI-08411/ 1つの場合、使うピン 4:DIN:コマンド入力 3:VCC:5V 1:GND:GND
  • 24.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. フルカラーLEDを使う準備 • ライブラリをダウンロード – 使用するライブラリは、LEDによって違うので注意 – ダウンロード先 • https://github.com/adafruit/Adafruit_NeoPixel • 「Clone or download」→「Download ZIP」 • 開発環境に追加 – 「スケッチ」→「ライブラリをインクルード」 →「ZIP形式のライブラリをインストール」→ファイルを指定 • コントロールは、デジタル8番ピンを使用 #define PIN 8 24
  • 25.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. フルカラーLEDを点灯-1 • 0.5秒間隔に、点灯、消灯を繰り返す – 課題:RGBの組み合わせで、好きな色を作成 #include <Adafruit_NeoPixel.h> #define PIN 8 #define NUMPIXELS 5 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800); void setup() { Serial.begin(9600); Serial.println ("START"); pinMode(13, OUTPUT); digitalWrite(13, HIGH); // DIGITAL13を5Vとして使用 pixels.begin(); // This initializes the NeoPixel library. } void loop() { // 点灯 pixels.setPixelColor(0, pixels.Color(150, 0, 0)); // RED pixels.setPixelColor(1, pixels.Color( 0, 150, 0)); // GREEN pixels.show(); // 反映 delay(500); // ちょっと間をあける pixels.clear(); // 消灯 pixels.show(); // 反映 delay(500); // ちょっと間をあける } 25sample1.txt
  • 26.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. フルカラーLEDを点灯-2 • 色をランダムに変える #include <Adafruit_NeoPixel.h> #define PIN 8 #define NUMPIXELS 5 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800); void setup() { Serial.begin(9600); Serial.println ("START"); pinMode(13, OUTPUT); digitalWrite(13, HIGH); // DIGITAL13を5Vとして使用 pixels.begin(); // This initializes the NeoPixel library. } void loop() { // ランダムで点灯 for (int i = 0; i < NUMPIXELS; i++) { int c = random(1,8); // ランダムで1-7を発生させる pixels.setPixelColor(i, pixels.Color((c&1)*150, (c&2)*150, (c&4)*150)); } pixels.show(); delay(500); // ちょっと間をあける } 26 sample2.txt
  • 27.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. フルカラーLEDを点灯-3 • 炎を表現してみる #include <Adafruit_NeoPixel.h> #define PIN 8 #define NUMPIXELS 5 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800); void setup() { Serial.begin(9600); Serial.println ("START"); pinMode(13, OUTPUT); digitalWrite(13, HIGH); // DIGITAL13を5Vとして使用 pixels.begin(); // This initializes the NeoPixel library. } void loop() { // 炎っぽさを表現 for (int i = 0; i < NUMPIXELS; i++) { int c = random(10,100); // ランダムで10-99を発生させる pixels.setPixelColor(i, pixels.Color(c, 0, 0)); // 赤だけ使用 } pixels.show(); delay(random(10,100)); // 間隔もランダムで } 27 sample3.txt
  • 28.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. センサー+フルカラーLED
  • 29.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. こんなモノを作ってみよう • 距離センサー+フルカラーLED – 距離を色と数で表現 • 近づくと警告 • 最適な距離を指示 • マイク+フルカラーLED – 炎を表現。音があると消灯。リセットで復活 – 音があると点灯。一定時間経過で元の状態に戻る – 過去最大音を色と数で表現 • LEDが複数あれば、直近、10秒前、20秒前、と使い分ける – 拡張案:delay();の値を短くし、音の反応をよくする 29
  • 30.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. マイク+フルカラーLED-1 • 過去最大音をLEDで表現 setup() までは省略 int max = 0; void loop() { int val = analogRead(0); Serial.println (val); if (val > max){ max = val; } if (max <= 10){ // 低い int c = (max + 1) * 20; pixels.setPixelColor(0, pixels.Color(0, 0, c)); // 青 } else if (max <= 20){ int c = (max-10+1) * 20; pixels.setPixelColor(0, pixels.Color(c, c, 0)); // 黄 } else { int c = (max-20+1) * 20; if (c > 255) c = 255; pixels.setPixelColor(0, pixels.Color(c, 0, 0)); // 赤 } pixels.show(); delay(10); } 30sample4.txt
  • 31.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. マイク+フルカラーLED-2 • イルミネーションを息で消す int count = 0; // マイナスで消灯、プラスで点灯 void loop() { int val = analogRead(0); Serial.println (val); if (val > 10){ count = -1000; } if (count < 0){ pixels.clear(); // 全部消す pixels.show(); delay(5); count++; return; } if (count > 100){ for (int i = 0; i < NUMPIXELS; i++) { int c = random(1,8); // ランダムで1-7を発生させる pixels.setPixelColor(i, pixels.Color((c&1)*150, (c&2)*150, (c&4)*150)); } pixels.show(); count = 0; } delay(5); // 反応を良くするため、小さい値にする count++; } 31 sample5.txt 閾値は、調整 「音で点灯」もやってみよう 「近づいたら点灯」もやって みよう
  • 32.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 後片付け • 借りたものを返却してください 32
  • 33.
    Copyright © 2016Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. http://aitc.jp https://www.facebook.com/aitc.jp 最新情報は こちらをご参照ください ハルミン AITC非公式イメージキャラクター 使ってみたいセンサや 紹介できるセンサを アンケートに書いてください。 次回は、新しいセンサーと 複数のフルカラーLEDを使います