Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
川上 博
2013/11/19
LEDを光らせる実験を中心に
Arduinoをはじめよう
今日の内容2
第2回: ブレッドボード上のLEDを点滅させる
analogWrite( )
段々と明るくしたい,暗くしたい点けるだけでなく,明るさを調整したい
3
今日の用語:周波数(frequency)Hz
周期的な信号:周期(T)と周波数(f)
周期(T):1回繰り返すのにT秒かかる周波数(f):1秒間にf回繰り返す
f[Hz]=1/T
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
5
analogWrite(led, 128 );
200
100
50
明るい
暗い
パルス幅を変えて量の変化を表す:パルス幅変調(PWM)
ピン番号 明るさ
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までの整数
7
+
!
Vcc=5V
330
GND
LED
330
LED330
LED
5V
LEDのつなぎ方:3種類
9ピンにつなぐ
9ピンにつなぐ
9ピンにつなぐ
7ピンにつなぐ
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); }
}
段々と明るくなるプログラム
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); }
}
段々と暗くなるプログラム
10
+
!
Vcc=5V
330
GND
LED
330
LED330
LED
5V
点き方はどうなるだろう
9ピンにつなぐ
9ピンにつなぐ
9ピンにつなぐ
7ピンにつなぐ
11
つなぎ方のまとめ
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 の端子につなぐ:可能な接続の組み合わせ
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
14
15
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
17
18
19
B PD5
PD4
PD3 PD2
A
行 1
行 2
b
330 330
a
列 1 列 2
1サイクル
行1
列1 列2 列1 列2
行2
20
21
RGB LEDを点ける
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);}