マイコンで LED を光らせよう2...

24
ICT ジュニア(上田パソコンクラブ) マイコンで LED を光らせる/1 マイコンで LED を光らせよう ●今回のマイコン 今回使うマイコン「ちびでぃ~の 2」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。 アルデュイーノの電気回路図です。 デジタル入出力ピン(D0D13)、アナログ入出力ピン(A0A5)があります。 CPU RESET 3.3V 5V GND GND VIN A0 A1 A2 A3 A4 A5 LED デジタル入出力ピン アナログ入出力ピン AREF GND D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 USB ポート ピンの番号は、 マイコンのうら側 に書いてあります

Transcript of マイコンで LED を光らせよう2...

Page 1: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/1

マイコンで LED を光らせよう

●今回のマイコン

今回使うマイコン「ちびでぃ~の 2」は、アルデュイーノ(Arduino)というマイコンの一種です。

入門用に安く簡単に作れるように設計されています。

アルデュイーノの電気回路図です。

デジタル入出力ピン(D0~D13)、アナログ入出力ピン(A0~A5)があります。

CPU

RESET 3.3V

5V GND GND VIN

A0 A1

A2 A3 A4 A5

LED

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

AREF GND

D13 D12 D11

D10 D9 D8

D7 D6

D5 D4 D3

D2 D1 D0

USB ポート

ピンの番号は、

マイコンのうら側

に書いてあります

Page 2: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/2

●マイコンのプログラムを作る

ちびでぃ~の 2 をプログラムで動かすには、パソコンでプ

ログラムを作って、そのプログラムをちびでぃ~の 2 へ転

送して動かします。

まずちびでぃ~の 2 を USB ケーブルでパソコンにつなげ

ます。

マイコンのプログラムを作るには、「Arduino IDE」

(アルデュイーノ アイディーイー)というソフトを使います。

Arduino IDE のアイコンをダブルクリックして、ソフトを起動します。

IDE の画面が開きます。

Page 3: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/3

●マイコンの LED を光らせる

まず、マイコンに付いている LED を、プログラムで光ら

せてみます。

用意してあるサンプルプログラムを開きます。

メニューの「ファイル」→「開く」を選びます。

デスクトップにある「LED0」

のフォルダを開き、

「LED0.ino」のファイルを選

んで、開きます。

サンプルプログラムが

表示されます。

Page 4: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/4

サンプルプログラムの中身は、以下のようになっています。

① コメントで、プログラムのタイトルが書かれています。

「//」(スラッシュ 2 個)の後ろには、好きなコメントが書けます。何を書いてもプログラムの

実行には影響しません。

② LED のピン番号を表す変数「led」を「13」に設定しています。

変数とは、いろいろな数値を入れる「箱」のようなものです。小学生の人は算数で使う「□」

(四角)、中学生以上の人は「x」(エックス)などと同じだと思ってください。

マイコンに付いている LED は、CPU の 13 番ピンにつながっています。

③ ここから、最初の設定をするプログラムです。「void setup()」の後ろの「{ }」(中かっこ)で

囲まれたプログラムは、プログラムが実行されると最初に 1 回だけ実行されます。

// *** LED0 ***

// LEDのピン番号

int led = 13;

// === 初期設定 ===

void setup() {

// LEDのピンを出力モードに

pinMode(led, OUTPUT);

}

// === ループ ===

void loop() {

// LEDを ON

digitalWrite(led, HIGH);

// 待ち時間

delay(1000);

// LEDを OFF

digitalWrite(led, LOW);

// 待ち時間

delay(1000);

}

① プログラムタイトル(コメント)

②LED 用のピン番号を

マイコンの LED(13 番)に設定

④LED 用のピンを

出力モードに設定

⑤以下のプログラムをループ(くり返し)

③最初の設定をするプログラム

⑥LED 用のピンに「HIGH」(1)を出力して

LED を光らせる

⑦1 秒待つ

⑧LED 用のピンに「LOW」(0)を出力して

LED を消す

⑨1 秒待つ

Page 5: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/5

④ 「pinMode」(ピンモード)命令で、LED 用のピンを「OUTPUT」(アウトプット、出力モード)

に設定します。

⑤ ここから、ループ(くり返し)のプログラムです。「void loop()」の後ろの「{ }」で囲まれたプロ

グラムは、ずっと繰り返します。

⑥ 「digitalWrite」(デジタルライト)命令で、LED 用のピンに「HIGH」(1)を出力します。これ

で LED が光ります。

⑦ 「delay」(ディレイ)命令で時間待ちをします。待つ時間はミリ秒(1000 分の 1 秒)単位で

指定します。「1000」と指定すると 1 秒待ちます。

⑧ digitalWrite命令で、LED用のピンに「LOW」(0)を出力します。これでLEDが消えます。

⑨ delay 命令で 1 秒待ちます

あとは⑥~⑨をずっと繰り返します。

IDE のメニューの下にある「→」ボタンをクリックすると、

プログラムがマイコンへ転送されます。

無事に転送されると、自動的にプログラムが実

行されます。

マイコンに付いている LED が点滅します。

delay 命令の待ち時間を変えると、点滅する時間が変わります。

数字をいろいろ変えて試してみましょう。

Page 6: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/6

●外に付けた LED を光らせる

今度はマイコンに付いているLEDではなく、マイコンの外に別のLEDを付けて光らせてみま

しょう。

今回は「ブレッドボード」を使って電気回路を

作ります。

はんだ付けをしなくても電気回路が作れる、

便利なボードです。

ボードには、穴がいくつも開いています。

この穴に、部品をさしていきます。

左右にある「+」「-」の穴は、ボードの中で縦

につながっています。

中央の「abcde」「fghij」の穴は、ボードの中で

横につながっています。

それでは、LED を光らせる回路を作

りましょう。

マイコンの D2 ピン→LED→抵抗→

マイコンのGND(グラウンド)端子、と

いう回路を作ります。

この順番で電流が流れて、LED が

光ります。

電流の

向き

LED 抵抗

Page 7: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/7

写真のように電気回路を配線します。

LED の端子は、「+」と「-」があります。

向きを間違えると光らないので、注意してください。

抵抗は、電流を流れにくくする部品です。LED に流れる電流を少なくするために入れます。

向きはどちら向きでもいいです。

GND

(上から 2 番目)

D2

(下から 3 番目)

LED 抵抗

-の

ライン

-の

ライン

横一列に

並べる

+ -

+ (足が長い)

- (足が短い)

-の方が平らに

欠けている

Page 8: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/8

電気回路ができたら、プログラムを改造します。

プログラムを転送して実行してみましょう。

LED が点滅します。

delay 命令の数字を変えて、点滅する時間をいろいろ変えてみましょう。

IDE のメニューで、「ファイル」→「名前を付けて保存」を選びます。

保存先を「デスクトップ」、ファイル名を「LED1」にして、プログラムを保存してください。

// *** LED1 ***

// LEDのピン番号

int led = 2;

プログラムのタイトルを「LED1」に変えます

LED のピン番号を「2」に変えます

Page 9: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/9

●LED の数を増やす

今は LED が 1 個だけですが、2 個に増やしてみましょう。

マイコンの D3 ピンへ、もう 1 個の LED と抵抗をつなげます。

ブレッドボード上では、1 個目の LED のラインから 1 列空けて上に、2 個目の LED のライン

を並べます。(1 列空けないと、LED がぶつかってしまって差しこめません)

回路図では、右の図のようになります。

D3

(下から 4 番目)

LED

抵抗

-の

ライン + -

1 列空けて

上に並べる

Page 10: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/10

次に、プログラムを改造します。

1 個目の LED と 2 個目の LED が、交互に光るようにします。

プログラムを転送して実行してみましょう。

2 個の LED が交互に光ります。

LED1とLED2の delayの待ち時間をいろいろ

変えて、試してみましょう。

// *** LED2 ***

// LEDのピン番号

int led1 = 2;

int led2 = 3;

// === 初期設定 ===

void setup() {

// LEDのピンを出力モードに

pinMode(led1, OUTPUT);

pinMode(led2, OUTPUT);

}

// === ループ ===

void loop() {

// LED1を光らせる

digitalWrite(led1, HIGH);

delay(1000);

digitalWrite(led1, LOW);

// LED2を光らせる

digitalWrite(led2, HIGH);

delay(1000);

digitalWrite(led2, LOW);

}

プログラムのタイトルを「LED2」に

変数 led1 を「2」に

変数 led2 を「3」に設定

LED1 用のピン・LED2 用のピンを

出力モードに設定

LED1 を ON

1 秒待つ

LED1 を OFF

LED2 を ON

1 秒待つ

LED2 を OFF

Page 11: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/11

LED をもう 1 個増やして、3 個にしてみましょう。

2 個目と同じように、マイコンの D4 ピンに LED と抵抗をつなげます。

回路図では、右の図のようになります。

D4

(下から 5 番目)

LED

抵抗

-の

ライン + -

1 列空けて

上に並べる

Page 12: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/12

次に、プログラムを改造して、3 個の LED が順番に光るようにします。

プログラムを転送して実行してみましょう。

3 個の LED が順番に光ります。

LED1~3 の delay の待ち時間をいろいろ変えて、

試してみましょう。

// *** LED3 ***

// LEDのピン番号

int led1 = 2;

int led2 = 3;

int led3 = 4;

// === 初期設定 ===

void setup() {

// LEDのピンを出力モードに

pinMode(led1, OUTPUT);

pinMode(led2, OUTPUT);

pinMode(led3, OUTPUT);

}

// === ループ ===

void loop() {

// LED1を光らせる

digitalWrite(led1, HIGH);

delay(1000);

digitalWrite(led1, LOW);

// LED2を光らせる

digitalWrite(led2, HIGH);

delay(1000);

digitalWrite(led2, LOW);

// LED3を光らせる

digitalWrite(led3, HIGH);

delay(1000);

digitalWrite(led3, LOW);

}

プログラムのタイトルを「LED3」に

変数 led1~led3 を「2」「3」「4」に設定

LED1~3 用のピンを

出力モードに設定

LED3 を ON

1 秒待つ

LED3 を OFF

Page 13: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/13

●7 セグメント LED を使う

「7 セグメント LED」を使って、数字を表示してみましょう。

7 セグメント LED は、7 個の LED を数字の形に並べたものです。

小数点も合わせて、全部で 8 個の LED がパッケージに収められています。

7 セグメント LED

裏側。10 本のピンがあります。

LED は、数字を表示する「a」~「g」の 7 個、小数点を

表示する「dp」、合計 8 個あります。

裏側の 10 本のピンは、○数字のように番号が付いて

います。

内部では、8 個の LED がこの回路図の

ようにつながっています。

回路図の番号は、ピンの番号です。

回路では、上の 7 番ピン~5 番ピンをマイコンの端子につなぎ、下の 3 番ピンまたは 8 番ピ

ンを GND(グラウンド)につないでおきます。

そして例えば 7 番ピンを「HIGH」にすると、「a」の LED に電流が流れて光ります。

Page 14: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/14

ブレッドボードに 7 セグメント LED を差して、配線します。

配線がたくさんあって大変ですが、ワイヤーを色分けするとわかりやすいです。

D9(上から 7 番目)

(全部で 8 本)

D2(下から 3 番目)

GND(上から 2 番目) 抵抗

GND と、ボードの「-」

ラインをつなげる 「-」ライン

7 セグメ

ント LED

Page 15: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/15

次にプログラムを改造します。

// *** LED7A ***

// LEDのピン番号

int leda = 2;

int ledb = 3;

int ledc = 4;

int ledd = 5;

int lede = 6;

int ledf = 7;

int ledg = 8;

int leddp = 9;

// === 初期設定 ===

void setup() {

// LEDのピンを出力モードに

pinMode(leda, OUTPUT);

pinMode(ledb, OUTPUT);

pinMode(ledc, OUTPUT);

pinMode(ledd, OUTPUT);

pinMode(lede, OUTPUT);

pinMode(ledf, OUTPUT);

pinMode(ledg, OUTPUT);

pinMode(leddp, OUTPUT);

}

// === ループ ===

void loop() {

// 数字を表示する

int i;

i = 0;

printn(i);

delay(1000);

}

(↓続く↓)

タイトルを「LED7A」に変更

a~dp の LED に対応したピン番号を設定

※同じような行が続くので、コピー&貼り付けで

行を増やすと、打つ文字が少なくてすみます。

a~dp の LED に対応したピンを出力モードに設定

※同じような行が続くので、コピー&貼り付けで

行を増やすと、打つ文字が少なくてすみます。

printn 関数を呼び出して、数字を表示する

今回は「0」を表示

1 秒待つ

Page 16: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/16

プログラムを転送して、実行してみましょう。

7 セグメント LED に「0」が表示されます。

printn 関数で、各 LED の「HIGH」「LOW」を

変えると、表示が変わります。

いろいろ試してみましょう。

// === 数字表示関数 ===

void printn(int i) {

digitalWrite(leda, HIGH);

digitalWrite(ledb, HIGH);

digitalWrite(ledc, HIGH);

digitalWrite(ledd, HIGH);

digitalWrite(lede, HIGH);

digitalWrite(ledf, HIGH);

digitalWrite(ledg, LOW);

}

新しく、数字表示関数 printn を追加します

今回は「0」を表示。LED の a~f を ON、

g を OFF にすると、「0」になります。

Page 17: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/17

●7 セグメント LED で 0~9 を表示

今のプログラムでは、「0」しか表示できません。

「0」~「9」の数字が表示できるように、プログラムを改造します。

// *** LED7B ***

(※中略)

// === 数字表示関数 ===

void printn(int i) {

switch (i) {

case 0:

digitalWrite(leda, HIGH);

digitalWrite(ledb, HIGH);

digitalWrite(ledc, HIGH);

digitalWrite(ledd, HIGH);

digitalWrite(lede, HIGH);

digitalWrite(ledf, HIGH);

digitalWrite(ledg, LOW);

break;

case 1:

digitalWrite(leda, LOW);

digitalWrite(ledb, HIGH);

digitalWrite(ledc, HIGH);

digitalWrite(ledd, LOW);

digitalWrite(lede, LOW);

digitalWrite(ledf, LOW);

digitalWrite(ledg, LOW);

break;

case 2:

digitalWrite(leda, HIGH);

digitalWrite(ledb, HIGH);

digitalWrite(ledc, LOW);

digitalWrite(ledd, HIGH);

digitalWrite(lede, HIGH);

digitalWrite(ledf, LOW);

digitalWrite(ledg, HIGH);

break;

タイトルを「LED7B」に変更

「switch case」命令で、i の値によって「0」~「9」の場合分け

「0」を表示

「1」を表示

「2」を表示

Page 18: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/18

case 3:

digitalWrite(leda, HIGH);

digitalWrite(ledb, HIGH);

digitalWrite(ledc, HIGH);

digitalWrite(ledd, HIGH);

digitalWrite(lede, LOW);

digitalWrite(ledf, LOW);

digitalWrite(ledg, HIGH);

break;

case 4:

digitalWrite(leda, LOW);

digitalWrite(ledb, HIGH);

digitalWrite(ledc, HIGH);

digitalWrite(ledd, LOW);

digitalWrite(lede, LOW);

digitalWrite(ledf, HIGH);

digitalWrite(ledg, HIGH);

break;

case 5:

digitalWrite(leda, HIGH);

digitalWrite(ledb, LOW);

digitalWrite(ledc, HIGH);

digitalWrite(ledd, HIGH);

digitalWrite(lede, LOW);

digitalWrite(ledf, HIGH);

digitalWrite(ledg, HIGH);

break;

case 6:

digitalWrite(leda, HIGH);

digitalWrite(ledb, LOW);

digitalWrite(ledc, HIGH);

digitalWrite(ledd, HIGH);

digitalWrite(lede, HIGH);

digitalWrite(ledf, HIGH);

digitalWrite(ledg, HIGH);

break;

「3」を表示

「4」を表示

「5」を表示

「6」を表示

Page 19: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/19

ここまで入力できたら、「ループ」部分の変数 iの値を

「0」~「9」に変えて、プログラムを実行してみましょ

う。

「0」~「9」の数字が

表示できましたか?

case 7:

digitalWrite(leda, HIGH);

digitalWrite(ledb, HIGH);

digitalWrite(ledc, HIGH);

digitalWrite(ledd, LOW);

digitalWrite(lede, LOW);

digitalWrite(ledf, HIGH);

digitalWrite(ledg, LOW);

break;

case 8:

digitalWrite(leda, HIGH);

digitalWrite(ledb, HIGH);

digitalWrite(ledc, HIGH);

digitalWrite(ledd, HIGH);

digitalWrite(lede, HIGH);

digitalWrite(ledf, HIGH);

digitalWrite(ledg, HIGH);

break;

case 9:

digitalWrite(leda, HIGH);

digitalWrite(ledb, HIGH);

digitalWrite(ledc, HIGH);

digitalWrite(ledd, HIGH);

digitalWrite(lede, LOW);

digitalWrite(ledf, HIGH);

digitalWrite(ledg, HIGH);

break;

}

}

「7」を表示

「8」を表示

「9」を表示

// === ループ ===

void loop() {

// 数字を表示する

int i;

i = 0;

printn(i);

delay(1000);

}

Page 20: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/20

いちいちプログラムを書き換えて数字を表示するのは面倒です。

自動的に「0」~「9」の数字が表示されるようにしてみましょう。

「ループ」の部分のプログラムを改造します。

プログラムを転送して実行してみましょう。

「0」~「9」までの数字が順番に表示されます。

「9」の次は「0」に戻ります。

for 命令で、i を 0~9 に変化させて

くり返し

// *** LED7C ***

(※中略)

// === ループ ===

void loop() {

// 数字を表示する

for (int i = 0; i <= 9; i++){

printn(i);

delay(1000);

}

}

タイトルを「LED7C」に変更

Page 21: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/21

●マイコンさいころを作る

0~9 の数字を順番に表示するだけでは面白くありません。

いろいろな数字をランダムに表示する、マイコンさいころ(ルーレット)を作ってみましょう。

ランダムな数字(乱数)を表示するように、プログラムを改造します。

プログラムを転送して実行してみましょう。

「0」~「9」までの数字がランダムに表示されます。

// *** SAIKORO1 ***

(※中略)

// === 初期設定 ===

void setup() {

// LEDのピンを出力モードに

pinMode(leda, OUTPUT);

pinMode(ledb, OUTPUT);

pinMode(ledc, OUTPUT);

pinMode(ledd, OUTPUT);

pinMode(lede, OUTPUT);

pinMode(ledf, OUTPUT);

pinMode(ledg, OUTPUT);

pinMode(leddp, OUTPUT);

randomSeed(analogRead(0));

}

// === ループ ===

void loop() {

// 数字を表示する

int r;

r = random(10);

printn(r);

delay(500);

}

タイトルを「SAIKORO1」に変更

乱数の初期設定。これをしないと、

毎回同じパターンで数が出てしまう。

変数 r を ramdom 関数を使ってランダムに設定

r の値を表示して、0.5 秒待つ

(さいころなので動きを速くする)

Page 22: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/22

本物のさいころは、人間が手で振ると、ころころ転がって止まりますね。

マイコンさいころをスタートさせた後に、押しボタンスイッチを押して止められるようにしてみま

しょう。

まず、回路に押しボタンスイッチ(タクトスイッチ)を追

加します。

タクトスイッチは、小さな押しボタンスイッチで、4 本

の端子が付いています。

タクトスイッチの 4 本の端子は、内部で右の図のよ

うにつながっています。

1と2、3と4は、常につながっています。

ボタンを押すと、1-2の線と 3-4の線の間がつなが

り、1~4 まで全ての端子がつながります。

例えば1と 4 の端子で見ると、いつもは OFF、ボタ

ンを押すとつながって ON になります。

以下のようにブレッドボードにタクトスイッチをさして、マイコンの D10 端子から配線します。

タクトスイッチ

D10

(上から 6 番目)

タクトスイッチの

端子に合わせて

配線する

「-」ラインにつなげる

Page 23: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/23

回路図では、以下のようになります。

続いて、プログラムを改造します。

最初の初期設定の部分で、タクトスイッチのピン(10 番ピン)の設定をします。

// *** SAIKORO2 ***

// LEDのピン番号

int leda = 2;

int ledb = 3;

int ledc = 4;

int ledd = 5;

int lede = 6;

int ledf = 7;

int ledg = 8;

int leddp = 9;

int button = 10;

(↓続く↓)

タイトルを「SAIKORO2」に変更

ボタンのピン番号を 10 に設定

スイッチが押されると、D10 ピンが GND(グラウン

ド)とつながるので「LOW」(0)になります。

プログラムでは、D10 が「LOW」かどうかで、ボタン

が押されたことを判断します。

Page 24: マイコンで LED を光らせよう2 」は、アルデュイーノ(Arduino)というマイコンの一種です。 入門用に安く簡単に作れるように設計されています。

ICT ジュニア(上田パソコンクラブ)

マイコンで LED を光らせる/24

プログラムを実行してみましょう。

スタートすると、さいころが高速で回ります。

ボタンを押すと、さいころが 3 秒間止まって表示され、また回り始めます。

// === 初期設定 ===

void setup() {

// LEDのピンを出力モードに

pinMode(leda, OUTPUT);

pinMode(ledb, OUTPUT);

pinMode(ledc, OUTPUT);

pinMode(ledd, OUTPUT);

pinMode(lede, OUTPUT);

pinMode(ledf, OUTPUT);

pinMode(ledg, OUTPUT);

pinMode(leddp, OUTPUT);

// ボタンのピンを入力モードに

pinMode(button, INPUT_PULLUP);

randomSeed(analogRead(0));

}

// === ループ ===

void loop() {

int r;

if (digitalRead(button) == HIGH) {

// さいころが回る

r = random(10);

printn(r);

delay(100);

}

else {

// さいころが止まる

delay(3000);

}

}

ボタンのピンを入力モード(プルアップ)に

設定。こうすると、値は以下のようになる。

ボタンが押されていない時=HIGH(1)

ボタンが押された時=LOW(0)

digitalRead 関数で、ボタンのピンの値を

チェック。HIGH なら押されていない。

ボタンが押されていない時は、

さいころを高速で回す。

ボタンが押されたら

さいころを 3 秒間止める。