22
川上 博 2013/11/19 LEDを光らせる実験を中心に Arduinoをはじめよう

Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

川上 博

2013/11/19

LEDを光らせる実験を中心に

Arduinoをはじめよう

Page 2: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

今日の内容2

第2回: ブレッドボード上のLEDを点滅させる

analogWrite( )

段々と明るくしたい,暗くしたい点けるだけでなく,明るさを調整したい

Page 3: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

3

今日の用語:周波数(frequency)Hz

周期的な信号:周期(T)と周波数(f)

周期(T):1回繰り返すのにT秒かかる周波数(f):1秒間にf回繰り返す

f[Hz]=1/T

Page 4: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

4

const int led = 13;

void setup() { pinMode(led, OUTPUT); }

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

点滅の周波数を求めよ

点灯時間=1000[ms]=1[s]

消灯時間=1000[ms]=1[s]

周期=2000[ms]=2[s]周波数=1/2[Hz]

1000 1000

HIGH

LOWtime

HIGH

LOWLOW

Page 5: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

5

analogWrite(led, 128 );

200

100

50

明るい

暗い

パルス幅を変えて量の変化を表す:パルス幅変調(PWM)

ピン番号 明るさ

Page 6: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

69

AREF

RESET

L

TXR

X

ON

GND1312

~11~10

~98

7~6~5

4~3

2TX->1RX<-0

A0A1A2A3A4A5

3V3RESETIOREF

5VGNDGNDVin

DIG

ITAL(PWM

~)

ARDUINO UNO

R3

ATM

EGA3

28P-

PU

ANALO

G IN

POW

ER

1

2

3

4

5

6

7

8

9

10

11

12

13

14

28

27

26

25

24

23

22

21

20

19

18

17

16

15

analogWrite( ) できるポートは限られている

~ が付いているポートのみ:3,5,6,9,10,11

アナログ出力ポート

analogWrite(ピン番号,明るさ );

明るさ:0から255までの整数

Page 7: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

7

+

!

Vcc=5V

330

GND

LED

330

LED330

LED

5V

LEDのつなぎ方:3種類

9ピンにつなぐ

9ピンにつなぐ

9ピンにつなぐ

7ピンにつなぐ

Page 8: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

8

const int ledPin = 9;

void setup() { pinMode(ledPin, OUTPUT); }

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

}

段々と明るくなるプログラム

Page 9: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

9

const int ledPin = 9;

void setup() { pinMode(ledPin, OUTPUT);}

void loop() { for(int i = 255 ; i >= 0; i -=5) { analogWrite(ledPin, i); delay(50); }

}

段々と暗くなるプログラム

Page 10: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

10

+

!

Vcc=5V

330

GND

LED

330

LED330

LED

5V

点き方はどうなるだろう

9ピンにつなぐ

9ピンにつなぐ

9ピンにつなぐ

7ピンにつなぐ

Page 11: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

11

つなぎ方のまとめ

Page 12: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

12

AREF

RESET

L

TXR

X

ON

GND1312

~11~10

~98

7~6~5

4~3

2TX->1RX<-0

A0A1A2A3A4A5

3V3RESETIOREF

5VGNDGNDVin

DIG

ITAL(PWM

~)

ARDUINO UNO

R3

ATM

EGA3

28P-

PU

ANALO

G IN

POW

ER

1

2

3

4

5

6

7

8

9

10

11

12

13

14

28

27

26

25

24

23

22

21

20

19

18

17

16

15

330

led

B

A

Led端子A, B が接続されるArduino 端子

① 5V(Vcc) の電源端子② 0V(GND) の端子③ digitalWrite の端子④ analogWrite の端子⑤ digitalRead の端子⑥ analogReadの端子

1つの LEDをArduino の端子につなぐ:可能な接続の組み合わせ

Page 13: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

13

Vcc GND

OFF OFF

ON OFF case1

case1(complementary)

case2(complementary)

case2

case3 case4

case5 case6

AA

B

BdigitalWrite analogWrite

Vcc

GND

digitalWrite

analogWrite

1つの LEDをArduino の端子につなぐ:可能な接続の組み合わせ

330

led

Page 14: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

14

Page 15: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

15

Page 16: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

16

AREF

RESET

L

TXR

X

ON

GND1312

~11~10

~98

7~6~5

4~3

2TX->1RX<-0

A0A1A2A3A4A5

3V3RESETIOREF

5VGNDGNDVin

DIG

ITAL(PWM

~)

ARDUINO UNO

R3

ATM

EGA3

28P-

PU

ANALO

G IN

POW

ER

1

2

3

4

5

6

7

8

9

10

11

12

13

14

28

27

26

25

24

23

22

21

20

19

18

17

16

15

220

12

34

5

5

6

7 7 6 5 1 2Pins LEDs

3 4 5 6

L L L 0 0 0 0 0 0L H i 1 0 0 0 0 0H L i 0 1 0 0 0 0i L H 0 0 1 0 0 0i H L 0 0 0 1 0 0L i H 0 0 0 0 1 0H i L 0 0 0 0 0 1

6220

220

Charlieplexing connection of 6 leds

Page 17: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

17

Page 18: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

18

Page 19: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

19

B PD5

PD4

PD3 PD2

A

行 1

行 2

b

330 330

a

列 1 列 2

1サイクル

行1

列1 列2 列1 列2

行2

Page 20: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

20

Page 21: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

21

RGB LEDを点ける

Page 22: Arduinoをはじめようcms.db.tokushima-u.ac.jp/DAV//person/S10723/Arduinoで...今日の内容 2 第2回: ブレッドボード上のLEDを点滅させる analogWrite( ) 段々と明るくしたい,暗くしたい

22

const int ledR=3;const int ledG=5;const int ledB=6;float r, g, b, s=0.0;

void setup(){}

void loop(){ r=(cos(6.2832/256*s)+1)*127; g=(cos(6.2832/256*s-2.0944)+1)*127; b=(cos(6.2832/256*s-4.1888)+1)*127; analogWrite(ledR, r); analogWrite(ledG, g); analogWrite(ledB, b); s+=2.0; if(s==256) s=0.0; delay(50);}