Arduinoを用いた組込みシステム入門 - HirokiNakaharaOboe.Net

あ る で ぃ ー の
Arduinoを使った
組込みシステム入門
愛媛大学工学部情報工学科
中原研究室
今回は何をするの?

世の中の電化製品はほとんど全て
コンピュータが組み込まれています
↓
“組込みシステム”

Arduino (あるでぃーの)を使って組込み
システムを作ってみましょう
組込みシステムって何?

機器の制御を行う特定用途のコンピュータ

お値段・消費電力・処理性能毎に適した
マイコンが組み込まれている
マイコン?

入力・出力・演算・制御・記憶を
一まとめにしたコンピュータ
Arduino (あるでぃーの)

AVRというマイコン搭載の入門用ボード

Amazonで3000円くらい
ブレッドボード

穴にワイヤや電子部品を刺すことができる

お手軽にアイデアを試せる!
First TRY!

ArduinoをUSBケーブル経由でノートパ
ソコンにつなぎます

LEDを点灯させる回路を作ってみよう
– LEDの極性(+,-)に注意!
LED点灯回路
- (足が短い)
赤…5V
青…GND(0V)
+ (足が長い)
こんな回路と同じ
マイコンでコントロール
Arduinoが
プログラムで
電源のON/OFFを
切換える
回路の変更
ワイヤと抵抗の
穴が揃うように
Arduinoの8番ピンに
ワイヤの端を指す
プログラムを書こう
動かない??

ポートを確認しましょう
– TAのお兄さんにチェックしてもらおう
1秒ごとにLED点滅すればOK

ちょっと解説…
初期設定
主にピンの
入出力を
指定します
処理を記述
この中が
永遠に
繰り返されます
←8番ピンを出力(OUTPUT)
として指定
←8番ピンを5V (HIGH)
←1000ミリ秒(=1秒)待つ
←8番ピンを0V (LOW)
←1000ミリ秒(=1秒)待つ
デジタル信号

ON(=HIGH)とOFF(=LOW)を扱う

Arduinoだと
– ON(=HIGH)は5V
– OFF(=LOW)は0V
Let’s Lチカ
1.
500ミリ秒毎に点滅
2.
2000ミリ秒毎に点滅
3.
LEDを3つ(赤・黄・緑)に増やして
1秒ごとに点滅
– 注意: LED毎に抵抗を挟むこと!
4.
【難】信号機を作ってみましょう
ヒント
プログラム
こんなこともできるよ!

ミニ四駆の自律走行
大学ではこんなことを勉強…

フォールト・トレラント(ディペンダビリティ・
コンピューティング)
– 絶対に故障しないシステム
(もしくは故障してもカバーできる
システム)
– 墜落しない飛行機

微積分・統計学・コンピュータの知識を
駆使!
一休み…

ArduinoからUSBケーブルを取りましょう

ブレッドボードから部品を抜きましょう
圧電ブザーを鳴らそう

ブレッドボードに配線してUSBケーブル
をArduinoに刺す
8番ピンとGNDに刺してね
プログラムを入力

1秒毎に“ラ”の音が鳴ったら成功!
←8番ピンを出力
(OUTPUT)として指定
←”ラ”(440Hz)を鳴らす
←音を止める
音を変えてみよう








ラ: 440
シ: 493
ド: 523
レ: 587
ミ: 659
ファ:698
ソ: 783
ラ: 880
色々な効果音を鳴らそう!
1.
救急車:
960Hzで500ms→770Hzで500ms
2.
カッコウ:
1220Hzで200ms→無音で200ms
→980Hzで600ms
3.
NHKの時報
440Hzで100ms→無音900msを3回繰り返し
↓
880Hzで1500ms
スイッチを使おう
- (足が短い)
+ (足が長い)
赤…5V, 青…GND (0V)
こんな回路図と同じ
スイッチを押すとどうなる?

ONはHIGH(=5V), OFFはLOW(=0V)
スイッチがOFFのときは入力端子が
5Vにつながるので、ON
スイッチがONのときは入力端子が
GND(=0V)につながるので、OFF
プログラムを入力

押す→点灯, 離す→消灯
←11番ピンを入力
(INPUT)として指定
←11番ピンがLOWのときの処理
←11番ピンがLOWでないときの処理
場合分けをしたい→if文
if( 条件 ) {
// 条件が成立したときの処理
} else {
// 条件が成立しないときの処理
}
条件: == (一致), != (不一致), < , >, <=, >=
アナログ出力を使おう
- (足が短い)
+ (足が長い)
3番ピン
“~”がついたピンは
アナログ出力できる
プログラムを入力

だんだん明るくなる→だんだん暗くなる
←繰り返し処理のfor文
←analog値を出力, 0V-5Vを
256刻みで出力
繰り返し処理→for文
for( 開始条件; 終了条件; 更新処理) {
// 繰り返し処理
}
通常は変数を使う. 今回は”i”を使いました.
開始条件を書くときはおまじない”int”を書く.
i++はiを1つ増やす, i--はiを1つ減らす.
アナログ入力を
使おう
-
+
3番ピン
CdSセル
明るい→抵抗小
暗い→抵抗大
A5番ピン
プログラムを入力

手をかざす→暗→抵抗が大きい→valが小さくなる→消灯

手を放す→明→抵抗が小さい→valが大きくなる→点灯
←analog値を読み出す. Writeと違い
1024刻みで読み込む
乱数を使おう
+
+
+
-
3番, 7番, 13番ピン
↑おなじない.
ノイズ値を読み込む
←0~2までの値を
ランダムに出力
プログラムを
入力
作品を作ってみよう








ラーメンタイマ
カウントダウンタイマ
明るくなるとメロディーが流れる
暗くすると音が鳴る
手をかざすと明かりが点く
電子占い
電子サイコロ
電子ルーレット
Let’s 組込みコンピューティング