SFC デザイン言語WS(電子工作)第3回「電子工作の作法」

63
Makoto Hirahara 第3回 電子工作の作法 4.24 2015 DIY ELECTRONICS デザイン言語ワークショップ(電子工作)

Transcript of SFC デザイン言語WS(電子工作)第3回「電子工作の作法」

Makoto Hirahara

第3回 電子工作の作法

4.24 2015

DIY ELECTRONICSデザイン言語ワークショップ(電子工作)

2

今日の内容

・テスターの使い方

・オームの法則

・Arduinoについて

・IDEのインストール

・LEDをチカチカさせる(デジタルアウトプット)

・スイッチで入力(デジタルインプット)

TESTER

4

テスターの機能

・抵抗値を測る

・通電チェック

・電圧を測る

・電流を測る

・パルスの周波数

・音量

・光量

・トランジスタの増幅率

5

各部名称

リード棒直流電圧計測

直流電流計測

抵抗計測

COM端子

測定端子

レンジスイッチ

6

サンプル回路

・抵抗330Ω(橙橙茶金)

・LED

・可変抵抗

まだ電源には繋がない

7

抵抗値を測る

黒リード棒をCOM、赤リード棒をVΩmAへセットする。

8

抵抗値を測る

レンジスイッチを20kΩに合わせる。

9

抵抗値を測る

330Ω(橙橙茶金)の抵抗の両端にリードを接触させる。

橙橙茶金

10

抵抗値を測る

0.33と表示される。レンジが20kΩなので、1.0 = 1kΩ。

0.33

11

抵抗値を測る

レンジスイッチを2000Ωにする。

330

12

抵抗値を測る

可変抵抗を計る場合は、1と2にリード棒を接触させる。

21

31

2

13

通電チェック

レンジを2000Kに合わせ、通電チェックしたい両端にリード棒をあてる。

1ならば非通電、それ以外の値なら通電している。

通電していると音が鳴るテスターもある。

レンジスイッチを「  」などに合わせ

て、リード棒をあてる。

14

サンプル回路

Arduinoの5VとGNDに

つなぐ。

15

直流電圧を測る

測りたい場所に赤、グランドに黒のリード棒をあてる。

16

直流電圧を測る

レンジダイアルを     に合わせ、LEDの+とグランドにリード棒をあてる。Vー…1000

測定するレンジが不明な

場合は、大きなレンジか

ら徐々に下げて測る。

17

直流電圧を測る

レンジダイアルを    0, 20と徐々に下げる。Vー…20

18

直流電流を測る

測りたい場所の回路と直列になるように

リード棒をあてる。

19

直流電流を測る

Aー…200mレンジダイアルを に合わせ、回路の両端にあてる

測定するレンジが不明な

場合は、大きなレンジか

ら徐々に下げて測る。

可変抵抗を回してLEDの

明るさを変えると、電流

値も変わる。

0.35mA ~ 9.25mA

OHM’S LAW

21

オームの法則とは

オームの法則(オームのほうそく、Ohm's law)とは、導電現象で抵抗に流れ

る電流とそれによって発生する電位差に関する法則である。(wikipediaより)

電流(I) = 電圧(V) ÷ 抵抗(R)

電圧(V) = 抵抗(R) × 電流(I)

抵抗(R) = 電圧(V) ÷ 電流(I)

22

オームの法則の利用例

LEDを適切に光らせるための抵抗値を計算する。

LEDを電圧2.0V、電流20mA で使いたい。

電源は5.0V。

抵抗(R) = 電圧(V) ÷ 電流(I)

150Ω = (5.0V - 2.0V) ÷ 0.02A

150Ω を使用する。

5mm赤色LED OSDR5113A

◆本体:透明着色タイプ

◆直径:5mm

◆発光色:赤色

◆VF:2.0V(IF=20mAにおける標準値)

◆最大電流:30mA

ARDUINO

24

いろいろなマイコンボード

マイコンボードとは小さなコンピュー

ター(マイコン)と入出力装置が1枚

の基板にまとまっている物。

パソコンで言うと、CPU・メモリ・入

出力(マウスやディスプレイに繋がる

ポート)・電源などを備えていて、プ

ログラムが可能。

ラピッドプロトタイピングのためのマ

イコンボードはいろいろある。

mbed Arduino

maple Gainer

raspberrypi konashi

25

Arduinoとは

Arduino(アルドゥイーノ)は、AVRマイ

コンと入出力ポートを備えたマイコン

ボードと、Arduino言語の開発環境か

ら構成されるシステム。

仕様が公開されている オープンハード

ウェアなので、パーツを集めて自作す

る事もできる。Arduino UNO R3

26

バリエーション

Arduino Leonardo LilyPad Arduino Arduino Robot Arduino Esplora

A-Star 32U4 Micro Da Vinci 32U TinyDuino 8Pino

互換機

Arduinoブランド

IDE

28

IDEのダウンロード

Arduino公式サイト

http://www.arduino.cc

Download からOSを選ぶ。

JUST DOWNLOAD

をクリック

29

Mac(ドライバのインストール)

1. Arduino UNOをUSBケーブルでMacに繋ぐ

(何も表示されなければそのまま次のページへ)

2. ダイアログ表示 [新しいネットワークインターフェースが接続されました]

3. [ネットワーク環境設定] ボタンを押して、設定ウィンドウを開き、[適用]

30

Mac(シリアルポートとボードの選択)

1. http://arduino.cc/en/Main/Software からMacOSX用のファイルをDL

2. DLしたファイルを解凍して、Arduino.appをApplicationsに移動

3. Arduino.appを起動(Javaが入っていない場合は、インストールする)

4. メニュー[ツール][シリアルポート]から

/dev/tty.usbmodem123/, /dev/cu.usbmodem123/ を選択

USBのポートと機器によって決まる文字列。

5. メニュー[ツール][ボード]から [Arduino Uno] を選択

31

Windows 7

1. http://arduino.cc/en/Main/Software からWindows用のファイルをDL。展開する。

2. Arduino UNOをUSBケーブルでMacに繋ぐ

3. [コントロールパネル][システム][デバイスマネージャー]

4. Arduino UNOまたは不明なデバイス、として見つかるのでプロパティを開き [ド

ライバーの更新]をクリック

5. [一覧または特定の場所からインストールする] を選び、ダウンロードしたフォル

ダの中の [drivers] を選択する

6. ArduinoUNO.infがインストールされる。

7. ポート(COMとLPT)にArduinoUNO R3が表示されている事とポート番号を確

認する。

32

Windows 8

http://mag.switch-science.com/2013/02/05/use_uno_on_win8/

1. ダウンロードしたファイルを[Program Files]などに移動

2. Arduino IDE を起動

3. メニュー[ツール][シリアルポート]からさっき確認したCOM番号を選択。

4. メニュー[ツール][ボード]から [Arduino Uno] を選択

DIGITAL OUTPUT

34

サンプル回路

35

サンプルスケッチ

Arduino IDE のメニュー

[ファイル]-

[スケッチの例]-

[01.Basics]-

[Blink] を開く。

36

ピン番号の変更

pinMode(13, OUTPUT);

digitalWrite(13, HIGH);

digitalWrite(13, LOW);

pinMode(12, OUTPUT);

digitalWrite(12, HIGH);

digitalWrite(12, LOW);

37

マイコンボードに書き込む

→のボタンをクリック。

プログラムがコンパイルされ、

Arduinoに書き込まれます。

書き込みが終わると、自動的に起動

して、プログラムを実行する。

LEDが1秒ごとに点滅すれば成功。

// the setup function runs once when you press reset or power the board

void setup() {

// initialize digital pin 13 as an output.

pinMode(12, OUTPUT);

}

// the loop function runs over and over again forever

void loop() {

digitalWrite(12, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(12, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}

38

Blinkのコード

39

スケッチの処理の流れ

setup() 最初の1回だけの処理

変数の初期化、ピンの設定など

loop() 繰り返し行う処理

センサーの読み取り、LEDのOn/Offなど

宣言部

・変数の宣言

・ライブラリの読み込みなど

// the setup function runs once when you press reset or power the board

void setup() {

// initialize digital pin 13 as an output.

pinMode(12, OUTPUT);

}

// the loop function runs over and over again forever

void loop() {

digitalWrite(12, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(12, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}

40

Blinkのコード

// の行はコメント。

プログラムの挙動には影響しない。

どのような処理をしているか等のメモを書く

範囲指定の場合は、/* ~ */

// the setup function runs once when you press reset or power the board

void setup() {

// initialize digital pin 13 as an output.

pinMode(12, OUTPUT);

}

// the loop function runs over and over again forever

void loop() {

digitalWrite(12, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(12, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}

41

Blinkのコード

{ } で囲まれた範囲が、setup()

という名前で呼び出される。

Arduinoの起動時に1回呼ばれ

るので、初期化処理を行う。

// the setup function runs once when you press reset or power the board

void setup() {

// initialize digital pin 13 as an output.

pinMode(12, OUTPUT);

}

// the loop function runs over and over again forever

void loop() {

digitalWrite(12, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(12, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}

42

Blinkのコード

pinModeは、ピンの使い方を指定する関数。

12番ピンをOUTPUT(出力)として使う。

// the setup function runs once when you press reset or power the board

void setup() {

// initialize digital pin 13 as an output.

pinMode(12, OUTPUT);

}

// the loop function runs over and over again forever

void loop() {

digitalWrite(12, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(12, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}

43

Blinkのコード

loop()は、繰り返し呼び出される関数。

センサーの読み取りやLEDの点等など、主要

な機能はここに書く。

// the setup function runs once when you press reset or power the board

void setup() {

// initialize digital pin 13 as an output.

pinMode(12, OUTPUT);

}

// the loop function runs over and over again forever

void loop() {

digitalWrite(12, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(12, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}

44

Blinkのコード

digitalWrite()は、指定したピンの状態を設定します。

HIGHは5Vを流し、LOWは電圧をかけない。

// the setup function runs once when you press reset or power the board

void setup() {

// initialize digital pin 13 as an output.

pinMode(12, OUTPUT);

}

// the loop function runs over and over again forever

void loop() {

digitalWrite(12, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(12, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}

45

Blinkのコード

delay()は、指定された時間だけ処理を止める。

時間の単位はミリ秒。1ミリ秒は1/1000秒。

46

Blinkのコードを改造

void setup() {

pinMode(12, OUTPUT);

}

void loop() {

digitalWrite(12, HIGH);

delay(200);

digitalWrite(12, LOW);

delay(200);

}

点灯200msec, 消灯200msec

0.2秒毎に点滅する。

47

Blinkのコードを改造

void setup() {

pinMode(12, OUTPUT);

}

void loop() {

digitalWrite(12, HIGH);

delay(1);

digitalWrite(12, LOW);

delay(9);

}

点灯1msec, 消灯9msec

高速で点滅するため、10%の明るさに見える。

DIGITAL INPUT

49

サンプル回路

50

サンプルスケッチ

Arduino IDE のメニュー

[ファイル]-

[スケッチの例]-

[02.Digital]-

[Button] を開く。

const int ledPin = 13;

const int ledPin = 12;

51

マイコンボードに書き込む

→のボタンをクリック。

スイッチを押すと、LEDが点灯。

離すと消灯。

52

スケッチの説明const int buttonPin = 2;

const int ledPin = 12;

// variables will change:

int buttonState = 0; // variable for reading the pushbutton status

void setup() {

// initialize the LED pin as an output:

pinMode(ledPin, OUTPUT);

// initialize the pushbutton pin as an input:

pinMode(buttonPin, INPUT);

}

buttonPinを2番ピン

ledPinを12番ピンと設定する

53

スケッチの説明const int buttonPin = 2;

const int ledPin = 12;

// variables will change:

int buttonState = 0;

void setup() {

// initialize the LED pin as an output:

pinMode(ledPin, OUTPUT);

// initialize the pushbutton pin as an input:

pinMode(buttonPin, INPUT);

}

buttonPinの状態を記憶する。

HIGH = 1, LOW = 0

54

スケッチの説明const int buttonPin = 2;

const int ledPin = 12;

// variables will change:

int buttonState = 0;

void setup() {

// initialize the LED pin as an output:

pinMode(ledPin, OUTPUT);

// initialize the pushbutton pin as an input:

pinMode(buttonPin, INPUT);

}

ledPinを出力モードに

buttonPinを入力モードに設定

55

スケッチの説明void loop() {

buttonState = digitalRead(buttonPin);

if (buttonState == HIGH) {

// turn LED on:

digitalWrite(ledPin, HIGH);

}

else {

// turn LED off:

digitalWrite(ledPin, LOW);

}

}

buttonPinの状態を読み取り、

buttonStateへ格納

56

スケッチの説明void loop() {

buttonState = digitalRead(buttonPin);

if (buttonState == HIGH) {

// turn LED on:

digitalWrite(ledPin, HIGH);

}

else {

// turn LED off:

digitalWrite(ledPin, LOW);

}

}

buttonStateがHIGHならば、

ledPinをHIGH(LEDを点灯)

57

スケッチの説明void loop() {

buttonState = digitalRead(buttonPin);

if (buttonState == HIGH) {

// turn LED on:

digitalWrite(ledPin, HIGH);

}

else {

// turn LED off:

digitalWrite(ledPin, LOW);

}

}

buttonStateがHIGHでなければ、

ledPinをLOW(LEDを消灯)

58

【練習】

プログラムを改造して、ボタンを押す毎に

LEDのON/OFFが切り替わるようにしましょう。

DOCUMENT

60

参考サイト

• Arduino リファレンス

http://www.arduino.cc/en/Reference/HomePage

• Arduino 日本語リファレンス

http://www.musashinodenpa.com/arduino/ref/

• なんでも作っちゃう、かも。

http://arms22.blog91.fc2.com/blog-entry-297.html

61

参考書籍

• Arduinoをはじめよう 第2版 (Make:PROJECTS)

• Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ

(Make:PROJECTS)

• Access to Materials -デザイン/アート/建築のためのマテリアルコンピュー

ティング入門

• わかる!電子工作の基本100

• 作る・できる/基礎入門 電子工作の素

NEXT

63

次回の準備

• Analog Input

• 抵抗分圧回路

• センサーいろいろ