Arduinoではじめる
素晴らしきマイコンの世界
IT Technical Seminar V12
2011.05.20
株式会社オープントーン
根本

2

今日はこんなことします！

3

今回の目的
 まずはマ゗コンを知ってもらう マ゗コンってなに？
 Arduinoって一体・・・？

 マ゗コンって簡単ってことを知ってもらう
 基礎講座 ちょっとだけ応用 素晴らしきマ゗コンの世界に興味を持っていただければおらっしゃあぁぁ！！！
∩∧ ∧ヽ（ ﾟДﾟ）＼⊂＼Ｏ-､ ）～∪4

さっそくですが・・・
マイコンってなんだろ？

CPUやメモリを1つのLSIチップに集積した回路

5

どんなことに使われている？
 現代ではいろいろなものにマ゗コンが利用されている
 どんなものに利用されているかご存じ？

6

ところでArduinoって？
 アルドゥイーノと発音 イタリア生まれ
 入出力ポートを備えた基板
 C言語風のArduino言語とそれの統合開発環境から構成されるシステム

とにかく・・・

開発環境一式が揃っているため、誰でも簡単にマイコンの開発を始めることが出来る！
まずは準備を始めます！

7

必要なもの
 Arduino UNO
 3000円程度
 USBケーブル 580円程度
 Aオス-Bオス

8

あったらいいもの ブレッドボード 半田付けの必要がない
 250円程度
 ジャンパワ゗ヤ
 柔軟性がある 10本300円程度
 オス・メスに注意

 発光ダ゗オード 10本300円程度

次は開発環境構築です！

9

開発環境をつくりましょう！
 http://arduino.cc/en/

Downloadページに進み、使用OSにあったダウンロードリンクをクリック（2011/5/20時点のバージョンは「Arduino 0022」）

10

゗ンストール
 Arduino IDEの゗ンストールと設定゗ンストールは、先ほどダウンロードした「arduino-0022.zip」を任意の場所に展開するだけ展開したフゔ゗ルの中の「arduino.exe」を実行してIDEを起動する

 IDEを起動したところ

11

IDEの設定 Arduino IDEの゗ンストールと設定（続き）
Tools > Board > Arduino Unoを選択する
Tools > Serial Portで、USBケーブルを接続したシリゕルポートを指定する

以上で、開発環境構築は完了です。
いよいよ、部品の組み立てとプログラムです！

12

ArduinoにLEDを配線

１．LEDのプラスとArduinoのPIN13をジャンパワイヤでつなげる。
２．LEDのマイナスとArduinoのGNDをジャンパワイヤでつなげる。
※LEDは足が長いほうがプラスで、短いほうがマイナスです。

13

配線したArduinoとPCを接続
USBケーブル14

スケッチしてみよう！
 Arduino IDEを起動
 次のスケッチを記述してみよう！
#define LED_PIN 13#define INTERVAL 1000
int value = LOW;
void setup() {pinMode(LED_PIN, OUTPUT);}
void loop() {value = (value == HIGH ? LOW : HIGH);
digitalWrite(LED_PIN, value);
delay(INTERVAL);}

15

VerifyとUpload

データに誤りがないか、規格に従っているかなどを検査する

ArduinoにUploadする

書き込むときにはここをClick！

16

で、出来たのがこんな感じ

じゃあソースコードを見てみましょう！

17

スケッチの基本とは？
#define LED_PIN 13#define INTERVAL 1000

setup()
開始時に一度だけ呼ばれる

int value = LOW;
void setup() {pinMode(LED_PIN, OUTPUT);}
void loop() {value = (value == HIGH ? LOW : HIGH);
digitalWrite(LED_PIN, value);
delay(INTERVAL);}

loop()
この処理が呼ばれ続ける18

チカチカ光らせるスケッチ#define LED_PIN 13#define INTERVAL 1000
int value = LOW;

PIN13をOUTPUTとして指定

void setup() {pinMode(LED_PIN, OUTPUT);}
void loop() {value = (value == HIGH ? LOW : HIGH);
デジタル出力digitalWrite(LED_PIN, value);
delay(INTERVAL);}

指定したミリ秒待機します。

19

簡単でしょ？

これがArduino版
Hello Worldです！

20

では入力も加えましょう！

変更はこれだけ！

１．スイッチの片足側を、電源（５V）へつなげる。
２．スイッチのもう片足側は抵抗を挟み、入力するPINとなるPIN7へつなげる。
３．抵抗を通した先は、GNDへつなげる。

21

スケッチも少しだけ修正#define LED_PIN 13#define BTN_PIN 7#define INTERVAL 1000
int value = LOW;
void setup() {pinMode(LED_PIN, OUTPUT);
pinMode(BTN_PIN, INPUT);}

赤字が追加した箇所です。

void loop() {if (digitalRead(BTN_PIN) == HIGH || value == HIGH) {value = (value == HIGH ? LOW : HIGH);
digitalWrite(LED_PIN, value);
delay(INTERVAL);
}
}

22

で、出来たのがこんな感じ23

簡単でしょ？
とりあえず入出力完了。
興味を持ってもらえましたか？

もう少しだけ基礎にお付き合いください24

今までの件は・・・
 俗に言う、デジタル信号の入出力です。

 こんな゗メージです。
 なので、LEDも付く・付かないのような制御。

25

じゃあゕナログ信号って？
 ゕナログ入出力のご紹介 こんな゗メージです。
 なので、LEDも強弱をつけて制御できる。

26

ス゗ッチからセンサーへ！

変更はこれだけ！

１．LEDの出力先のPINは、PIN13からPIN9へ変更
２．スイッチをセンサーへ変更
３．センサーの入力PINを、PIN7からPINA0へ変更

27

ついでに解説#define LED_PIN 9#define SENSOR_PIN 0#define INTERVAL 10
int value = 0;
void setup() {pinMode(LED_PIN, OUTPUT);}PIN9をOUTPUTとして指定センサーの値を取得（アナログ入力）

void loop() {value = analogRead(SENSOR_PIN);
analogWrite(LED_PIN, value / 4);
delay(INTERVAL);}
アナログ出力※補足
analogWrite()でvalueを4で割る理由は、入力は0～1024の値を取得するが、出力は0～255の値までの為。

28

で、出来たのがこんな感じ29

簡単でしょ？

この程度で基礎が終わり？

30

この程度です！
 Arduinoが出来ること

これだけ・・・

 デジタル入力
 デジタル出力
 ゕナログ入力 ゕナログ出力

 プログラム実行でもこれだけ出来ると・・・31

こんなことも可能です。

32

発想次第で夢が広がる（かな）
そんなArduinoで遊ぶ為に・・・

次からは少～しだけスキルアップ！？

33

こんなの使ってみます。

何が出来るかな？？？

34

電光掲示板！の子供見たいなもの

じゃあ早速つかってみましょう35

まずはじめに見たのはこれ意味がわからなすぎ・・・（絶句）36

わからないので・・・

PINとマトリクスのPINをつないでみましょう（汗）

37

どうなるか確かめる
234567891011121314151617

このPINに信号を送ると、この列がつくんだ！38ってことは！？
4,6,9,12,13,14,15,17のPINに信号を送ると、こうなるんだね！

では、この状態で変化のなかったPINをもう一度試すと・・・

39

結果はこうなりました。
2

3

7

10

5

811

16

これでPINの役割がわかりました！

40

例えば・・・

41

では「A」を表示させたい場合

でも・・・

全部で16本のPINで、どう表現しているんだ？？？

42

実は「A」はこの集合体
1列目

2列目

3列目

4列目

5列目

6列目

7列目

8列目

43

これを高速に連続させると

44

さらにこれを応用すると

45

じゃあ最後はOpentoneってことで超お手軽にFelicaを読んじゃう方法です！

46

必要なものは RC-S620S
 これ１つでFeliCaのリーダー
 SONYさんからライブラリが提供されている
 これが超お手軽な最大の理由！

3,500円
これと一緒

47

実は必要なものがもう一つ
 FFC変換基板

つなげるところがない・・・

390円

48

ラ゗ブラリをダウンロード
 Arduino向けRC-S620/S制御ラ゗ブラリhttp://blog.felicalauncher.com/sdk_for_air/?page_id=269
949ラ゗ブラリ設定
 ダウンロードしたarduino-RCS620S.zipを解凍。
 解凍したフォルダを[RCS620S]にリネーム

フォルダ名が[Arduino-RCS620S]の場合、以下のようなメッセージがArduino IDE起動時に表示されます。

 Arduino IDEフォルダ内[libraries]フォルダへ[RCS620S]を移動

50

接続はこんな感じです。

51

サンプルプログラムの実行52

あ、もう終わりです・・・
FeliCaを読んでるかどうかわからん・・・

ちゃんと読み込んだときにIDm(Felica製造ID)
PMm(Felica製造パラメータ)
取得しています！

液晶ディスプレイに表示させて確認します53

ちょっと複雑ですがLCDキャラクタディスプレイ（SD1602H）
これは別途購入が必要です。

スケッチはexampleの中で、Felicaを読み込んだタイミングでLCDキャラクタディスプレイに書き込む処理を追加します。

54と言われても？？？ですよね

簡単に説明します！
キャラクタデゖスプレ゗用ラ゗ブラリ（LiquidCrystal.h）をinclude#include<LiquidCrystal.h>PINを指定しています。
（これは前頁の接続の場合です）

ラ゗ブラリの初期化（グローバルで）LiquidCrystal lcd(8, 7, 6, 5, 4, 3, 2);


LCDの初期化と表示

lcd.begin(2, 16);

2列16桁って意味です。

lcd.clear();lcd.setCursor(0, 1);

引数１、桁番号（0が1番目）
引数２、列番号（0が1番目）

lcd.write(0x41);

こんな感じです。
簡単でしたよね？

表示する文字0x41は「A」

55

で、出来たのがこんな感じ56

よりお手軽に始めるためにお店によってはエントリーキットなどが販売されていて、何をしていいのかわからない人でもとっつきやすいかも！

これは若松通商さんのエントリーキットです。

57

その他のArduino？
 Arduinoはオープンソース
Seeeduino

Seeeduino Film
Netduino.NET Micro Frameworkを使ってソフトウェアを開発！

58

最後に
 日本語リフゔレンスもある http://www.musashinodenpa.com/arduino/ref/ 専門家でなくても簡単に実現可能 何かを実現するための゗ンタフェース
 そして、自慢する為に！

59

ご静聴ありがとうございました。