第2回...

33
川上 博 2015/05/30 第2回 初めてのスケッチ(プログラム) LEDを光らせよう http://cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光らせよう/

Upload: others

Post on 03-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

川上 博2015/05/30

第2回 初めてのスケッチ(プログラム)

LEDを光らせよう

http://cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光らせよう/

Page 2: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

2

http://cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光らせよう/

今日のスライド 今日のスケッチ

配布資料のファイル スケッチのファイル

Page 3: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

3

Example02 ファイルの置き場所

① Example02.zipをwebから取り出し,解凍する

② Example02ファイルをArduinoファイルに入れる

コンピュータ/ローカルディスク/ユーザ/Hiroshi/マイドギュメント/Arduino

Page 4: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

今日のテーマ4

ブレッドボード上のLEDを点滅させる

前回の復習:Arduinoボード上のLEDを点滅させる

スイッチを使ってLEDを点けたり消したりする

Page 5: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

5

Arduinoボード上のLEDを点滅させる

① USBケーブルでPCとArduinoボードをつなぐ

② Arduino IDE(ソフト)を起動する

③ スケッチを書く:     ファイル>スケッチの例>01.Basics>Blink

④ 検証ボタンを押す

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

RX<-0

TX->1

2

~3

4

~5

~6

7

A0

Vin

GND

GND

5V

3V3

RST

IOr

A1

A2

A3

A4

A5

8

~9

~10

~11

12

13

GND

Aref

SDA

SCL

USB

USB

Reset

TX

RX

DC7V - 12V

5V

3V3

SW3

IRremote1

D11

D8

D13

LED

JP2

5VLEDIR

SW

JP

1

BAT

JJ3Arduino Leonardo

Dig

ital I/O

Po

wer

Po

wer

An

alo

g In

ATMEL

MEGA32U4

電源切り替えスイッチ

外部電源入力

USBパソコン接続

Page 6: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

6

① プログラムを書く

② プログラムを検証する (Verifyボタンを押す)

③ プログラムを書き込む (Uploadボタンを押す)

Arduino:最初のプログラム

④ Arduino上のLEDが点滅する

Page 7: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

7

/* Example 201A: Blink Turns on an LED for one second, then off for one second, repeatedly.*/const int led = 13;

void setup() pinMode(led, OUTPUT);

void loop() digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);

プログラムを読んでみよう

注釈

変数の宣言

初期設定

繰り返し実行する本体

Page 8: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

8

JJ3のピン配置

~印のピン:アナログ出力に使う13ピン:LEDにつながっている

0, 1ピン:シリアル通信に使われる

analogWrite(6, 128);

analogRead(5);

digitalWrite(12, HIGH);

digitalRead(12);

電源

アナログ•入力ピン ディジタル•入出力ピン

RX<-0

TX->1

2

~3

4

~5

~6

7

A0

Vin

GND

GND

5V

3V3

RST

IOr

A1

A2

A3

A4

A5

8

~9

~10

~11

12

13

GND

Aref

SDA

SCL

USB

USB

Reset

TX

RX

DC7V - 12V

5V

3V3

SW3

IRremote1

D11

D8

D13

LED

JP2

5VLEDIR

SW

JP

1

BAT

JJ3Arduino Leonardo

Dig

ital I/O

Po

wer

Po

we

r

An

alo

g In

ATMEL

MEGA32U4

Page 9: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

9

Read と Write

マイコンArduino

LEDLED

ディジタル出力

アナログ入力

スイッチRead

Write

analogWrite(6, 255);

analogRead(5);

digitalWrite(12, HIGH);

digitalRead(12);

センサー

アナログ出力

ディジタル入力

Page 10: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

10

Digital信号 と Analog信号

ディジタル信号

アナログ信号5V

0V

5V

3V2V

0V

HIGH

LOW

1

0

pin電圧

5V

0V

255

0

1023

0

入力

pin電圧

出力

Page 11: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

11

const int led = 13;

void setup() pinMode(led, OUTPUT);

void loop() digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);

//13ピンにLEDをつなぐ

//13ピンを出力にする

//13ピンに5Vを出力する

//13ピンに0Vを出力する

再び,プログラムを読んでみよう

RX<-0

TX->1

2

~3

4

~5

~6

7

A0

Vin

GND

GND

5V

3V3

RST

IOr

A1

A2

A3

A4

A5

8

~9

~10

~11

12

13

GND

Aref

SDA

SCL

USB

USB

Reset

TX

RX

DC7V - 12V

5V

3V3

SW3

IRremote1

D11

D8

D13

LED

JP2

5VLEDIR

SW

JP

1

BAT

JJ3Arduino Leonardo

Dig

ita

l I/

O

Po

we

r

Po

we

r

An

alo

g I

n

ATMEL

MEGA32U4

Page 12: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

const int led;int i, j;float x, y;

void setup()

void loop()

12

スケッチ(プログラム)の基本構造

定数,変数の定義(大域)

初期設定(一度だけ実行)

実行させる仕事(繰り返し実行)

Page 13: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

13

キーボード・ショートカット

Ctrl

テキストのコピーやペーストを簡単に行うキー操作

最初に,キー操作の前に,画面を選択しておくこと!

+ A すべてを選択(All)

Ctrl + C コピー(Copy)

Ctrl + V ペースト(貼付け)

次に,貼付けたい画面を選択して

どこにもコピーした結果は見えないけれどコピーされている!

Mac OSX : Ctrl cmd

Page 14: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

14

ブレッドボード上のLEDを点滅させる

Page 15: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

15

ブレッド・ボード

ジャンパー線で配線

Page 16: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

16

LED(発光ダイオード)

+端子:アノード (anode),ー端子カソード (cathode)

ー端子が共通:カソード・コモン+端子が共通:アノード・コモン

その他,自己点滅 LED,7セグメント LED等がある

単色光の LED

+

+

RGB3色の LED

++

+

G

KA

G

B

B

R

R①

Page 17: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

17

LEDの点灯回路

330オーム

A

K

Page 18: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

18

スケッチで光らせてみよう

GND13 A K

RX<-0TX->1

2~3

4~5~6

7

A0

VinGNDGND5V3V3RSTIOr

A1A2A3A4A5

8~9

~10~111213

GNDArefSDASCL

USB

USB

Reset

TXRX

DC7V - 12V

5V3V3

SW3

IRremote1D11

D8

D13

LED

JP25VLEDIRSW

JP1

BAT

JJ3Arduino Leonardo

Dig

ita

l I/

O

Po

we

r

Po

we

r

An

alo

g I

n

ATMEL

MEGA32U4

1 5 10 15 20

ED

CB

A

ED

CB

A

1JI

HG

F

JI

HG

F

5 10 15 20

X X

Y Y

LED

R = 330Ω

Page 19: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

19

/* Example 202A: Quiz*/const int led = 13;

void setup() pinMode(led, OUTPUT);

void loop() digitalWrite(led, HIGH); // Turns on the LED delay(1000); digitalWrite(led, LOW); // Turns off the LED delay(1000);

クイズ : Example 202A

① ピンを12番に変えてみよう

② 「0.1秒光り,0.9秒消える」を繰り返す

Page 20: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

20

スイッチを使ってLEDを点けたり消したりする

Page 21: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

21

ディジタル入力にスイッチを使う

SW

上から見た図

法記ので図路回

2つの端子Aどおし,Bどおしは内部でつながっている

A A

A

A

B

B

A B

B

抵抗 10k

押しボタンSW

配線 ++

− −

A B

A B

Page 22: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

22

スイッチを使ってLEDをコントロール

RX<-0

TX->1

2

~3

4

~5

~6

7

A0

Vin

GND

GND

5V

3V3

RST

IOr

A1

A2

A3

A4

A5

8

~9

~10

~11

12

13

GND

Aref

SDA

SCL

USB

USB

Reset

TX

RX

DC7V - 12V

5V

3V3

SW3

IRremote1

D11

D8

D13

LED

JP2

5VLEDIR

SW

JP

1

BAT

JJ3Arduino Leonardo

Dig

ital I/O

Po

wer

Po

wer

An

alo

g In

ATMEL

MEGA32U4

330Ω10kΩ

LED

1 5 10 15 20

E

D

C

B

A

E

D

C

B

A

X X+

SW

Page 23: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

23

Page 24: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

24

// Example 203A

const int led=12;const int button=7;int value;

void setup() pinMode(led, OUTPUT); pinMode(button, INPUT);

void loop() value=digitalRead(button); digitalWrite(led, value);

Example 203A

Page 25: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

25

クイズ : Example 204A

① JJ3のスイッチを使う

② スイッチを押したらLEDが点くスケッチに直す

RX<-0

TX->1

2

~3

4

~5

~6

7

A0

Vin

GND

GND

5V

3V3

RST

IOr

A1

A2

A3

A4

A5

8

~9

~10

~11

12

13

GND

Aref

SDA

SCL

USB

USB

Reset

TX

RX

DC7V - 12V

5V

3V3

SW3

IRremote1

D11

D8

D13

LED

JP2

5VLEDIR

SW

JP

1

BAT

JJ3Arduino Leonardo

Dig

ita

l I/

O

Po

we

r

Po

wer

An

alo

g I

n

ATMEL

MEGA32U4

330Ω

LED

1 5 10 15 20

E

D

C

B

A

E

D

C

B

A

X X+

Page 26: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

26

クイズ : Example 204A

// Example 204A

const int led=12;const int button=8;int value;

void setup() pinMode(led, OUTPUT); pinMode(button, INPUT_PULLUP);

void loop() value=digitalRead(button); digitalWrite(led, value);

// Example 203A

const int led=12;const int button=7;int value;

void setup() pinMode(led, OUTPUT); pinMode(button, INPUT);

void loop() value=digitalRead(button); digitalWrite(led, value);

Page 27: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

27

マイコンArduino

LED

ディジタル出力

スイッチ

Read

Write

digitalWrite(12, value);

value=digitalRead(8);

スイッチでLEDを光らせる

スイッチ

pinMode(8, INPUT_PULLUP);

ディジタル入力

pinMode(7, INPUT);

pinMode(12, OUTPUT);

value=digitalRead(7);

Page 28: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

28

関数に仕事をさせる

y = f(x)

入力変数出力変数

関数

digitalWrite(12, value);

value=digitalRead(8);入力変数

関数名出力変数

出力値,出力pin番号

pinMode(7, INPUT);

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

Page 29: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

29

const int led;int i, j;float x, y;

void setup()  led=13; pinMode(led, OUTPUT);

void loop() digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);

void 関数名(void)

定数の整数

初期設定関数(一度だけ実行)

実行させる仕事(繰り返し実行)

整数浮動小数点数字の変数

Page 30: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

30

今日使った関数void setup(void); void loop(void);

void pinMode(uint8_t, uint8_t);

void digitalWrite(uint8_t, uint8_t); int digitalRead(uint8_t);

void delay(unsigned long);

void : 入力値や帰り値の無いことを表すint : 正負の整数を表すunsigned long : 正の整数を表すuint8_t : 0 ~ 255の整数を表す

Page 31: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

31

Structure,基本構造         Variables(変数),データの型 setup()         Constants loop()          HIGH | LOW           INPUT | OUTPUT | INPUT_PULLUP 処理の制御,文の括り          true | false Control Structures         Data Types if          void if...else          int for          long while          float return          double Further Syntax ; (semicolon) (curly braces) // (single line comment) /* */ (multi-line comment) #include

Language Referencehttp://www.arduino.cc/en/Reference/HomePage

Page 32: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

32

演算子:算術,比較,論理など         Functions(関数) Arithmetic Operators           Digital I/O = (assignment operator)      pinMode() + (addition)             digitalWrite() - (subtraction)             digitalRead() * (multiplication)           Analog I/O / (division)             analogRead() Comparison Operators          analogWrite() == (equal to) != (not equal to)             Time < (less than)             millis() > (greater than)             micros() <= (less than or equal to)     delay() >= (greater than or equal to)   delayMicroseconds() Boolean Operators              Random Numbers && (and)             randomSeed() || (or)             random() ! (not) Compound Operators              Communication ++ (increment)             Serial -- (decrement) += (compound addition) -= (compound subtraction) *= (compound multiplication) /= (compound division)

Page 33: 第2回 初めてのスケッチ(プログラム)cms.db.tokushima-u.ac.jp/DAV/person/S10723/LEDを光ら...SW3 IRremote1 D11 D8 D13 LED JP2 5V LED IR SW JP1 BAT JJ3 Arduino Leonardo

33

クイズ : Example 205A

Example 203Aのスケッチを基にして, (a) 1回スイッチを押すとLEDが点灯し, (b) 次にスイッチを押すとLEDが消灯する すなわち,交互に点灯・消灯を繰り返す スケッチを書きなさい.

難易度:xxxx