Skip to content

Instantly share code, notes, and snippets.

@mackee
Created July 5, 2014 04:01
Show Gist options
  • Save mackee/c3c580d61da9ce847411 to your computer and use it in GitHub Desktop.
Save mackee/c3c580d61da9ce847411 to your computer and use it in GitHub Desktop.
初めてのArduino ワークショップ#00

初めてのArduino

ワークショップ #00 2014-07-05


注意事項

  • 今回はガイアックス様の会議室を使ってやっています
  • 飲食は自由です
  • 寒い等あったら言ってください

注意事項その2

  • 初めての試みなのでおて柔らかに
  • わからないことがあったらすぐ聞いてください!!!
    • わからないまま進むと必ず不幸になる
  • こうしたほうがいいとかそういう意見もください!
  • あとArduinoまだささないでください

本日やること

  • Arduino IDEのインストール
  • 初めてのLEDチカチカ
  • Arduinoのプログラムの書き方の説明
  • LEDを挿してチカチカさせる
  • 音を鳴らそう

Arduino IDEとは

  • Arduinoのプログラムを書くときに必要な物が揃ったソフト
    • エディタ
    • コンパイラ
    • 書き込み器
    • ライブラリ
    • シリアルモニタ
  • ではインストールしていきます

Arduino IDEのダウンロード

  • 本家のサイトからダウンロード
  • Arduino 1.0.5から落としてきましょう(1.5.6-r6はBETA版かつYunとDueしかサポートしてません!)
    • Windowsの方
      • Windows ZIP File
      • わからない場合はWindows ZIP Fileでいきましょう!
    • Macの方
      • Mac OS Xってやつをダウンロード
    • Linuxの方
      • Ubuntuの場合はこちらをみればOKそうです
      • その他のOSやトラブったらorわからなかったら対応させてください

Arduino IDEのインストール

  • Windowsの方
    • ダウンロードしたZIPを解凍してどこかわかりやすいところに置きましょう
    • 迷っている方はとりあえずデスクトップに置きましょう
  • Macの方
    • とりあえず解凍しましょう
    • Finderで開いたらアプリケーションにドラッグアンドドロップしましょう!
    • アプリケーション汚したくないよという方はその場で開いても大丈夫です

ドライバのインストール

  • ArduinoはUSBデバイスなので場合によってはドライバが必要です
  • そんな対応表がこちら! ☓が対応しないといけなくて、◯は何しなくてよいです
OS \ Arduinoの機種 Duemilanove以前 Uno以降
Windows
Mac
  • Linuxは相談させてください。案外挿したら動くかも
  • ドライバの入れ方はみなさんでこちらを見ましょう

MacのMavericksかつDuemilanoveの方

  • ドライバがバグるっぽいです
  • Appleのドライバが入ってそっちで使おうとする
  • 参考

Arduino IDEを立ち上げる

  • 今です! Arduinoを接続してください!
  • そんなわけでインストール完了したと思うのでArduino IDEを立ち上げます
  • Windowsの方
    • ZIPの場合は展開した中のArudinoIDE.exeを開く
    • Installerの方はスタートの中にあるはず
  • Macの方
    • アプリケーションに入れた方はLaunchPadなりで起動しましょう
    • そのまま置いとくよ!という方は落としてきて解凍したそいつをダブルクリック
  • Linuxの方
    • 相談させてください。。。

このような画面

"Arduino IDE"


機種の選択

  • ツール -> マイコンボード

"Arduino IDE"


シリアルポート

  • ツール -> シリアルポート
  • Windowsの場合
    • とりあえず一番でかい数字のCOMなんとかを選ぶ
  • Mac
    • Duemilanove /dev/tty.usbserial-なんとか
    • Uno /dev/usbmodemなんとか
  • Linux
    • 相談させてください

はじめてのプログラム

  • 以下を打ってみよう!
void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
}

このような感じ

"Arduino IDE"


書き込む

  • ウィンドウ左上の右矢印のボタン
    • マウスオーバーすると「マイコンボードに書き込む」と出る
  • そいつをクリックする!
  • 下に「マイコンボードへの書き込みが完了しました。」と出る
  • 何が起こったかは自分の目で確認しましょう
  • エラーとかあったら個別に対応します

みなさんLED光りましたか!

  • ほとんどのArduinoにはボード上にいくつかのLEDがあります
  • そのうち一個はピン(後述)にすでに接続されているのでなにも繋がなくても使えます
  • 今はそれをとりあえず光らせました!

ピン

  • Arduinoは電圧をかけたり受けたりすることの出来る電極がいくつかあります
  • それをピンと言います
  • 電極を挿せるようになっているピンもあれば中だけで使っているピンもあります
  • 先ほどのプログラムは中にも外にもつながっているピンを使いました

上から順番に説明

void setup() {
  • void setup()までがこれから準備に関することを書くよという宣言です
  • {}の間に準備することを書きます

pinMode

pinMode(13, OUTPUT);
  • pinModeは命令です。内容は()の中に2個書きます
  • pinModeはピンごとにそれが入力なのか出力なのかを設定する命令です
  • Arduinoはほとんどのピンで入力と出力どちらにも使えるようになっています
  • 1個目はピンの番号です。この場合は13番ピンのことを指します
  • 2個目は入力か出力なのかを指定します。
    • OUTPUTは出力です
    • 入力にしたい時はINPUTにします

閉じるのは忘れずに!

}
  • でないと怒られてしまいます

"エラーが出る!"


loop

void loop() {
  • loopはメインの処理を書いていきます
  • 最後まで行くとloopの一番上に戻ります(ゆえにループ)

setuploop

  • 以下の様な感じです

"setupとloop"


digitalWrite

digitalWrite(13, HIGH);
  • digitalWriteはピンから電圧をかけさせる命令です
  • この例では13番ピンに対してHIGHを書き込んでいます
  • digitalなのでHIGHもしくはLOWです
  • 電圧でいうところの5V0Vに対応します

LEDの話

  • LEDに電圧をかけると光ります!!!!すごい!
  • ただし作法がいります
  • 電気抵抗をかまさないといけないです
  • LED自体は電気抵抗が0オームです

オームの法則

  • みなさんオームの法則思い出しましょうオームの法則
  • これだけ覚えて><
  • Rが電気抵抗でVが電圧、Iが電流です

"V = R*I"

  • 変形するとこうなるわけで

"I=V/R"


無限大の電流

  • Vに5V、Rに電気抵抗が0が入ったらどうなるか
    • 電流が無限大!?
  • 実際には電線だったりLED自体にわずかに電気抵抗があるので無限大にはならない
  • でもめっちゃピカって光る そう、燃えるほどに
  • それなんで電気抵抗かまして電流を抑えてあげないといけないです
  • 13番ピンのLEDには電気抵抗が入っているのでご安心を

というわけで

  • 13番ピンに5Vをかけられました、だからLEDが光りました。
  • というわけではないのですが込み入った話はのちほど
  • このあたりで休憩?

今からLED配ります

  • 特殊な抵抗入りのLEDです
  • 5V専用です

LEDの足の長さ

  • LEDにはプラス極とマイナス極があります
  • 逆にかけると簡単に死にます
  • 足が長い方がプラスで短いほうがマイナス側です
  • なので基板とかにハンダ付けするときに切っちゃうとあんまりわからなくなります

Arduinoに挿す

  • まずArduinoをUSBポートから抜きましょう
    • Windowsはデバイスの取り外しとか出るかな?
  • プラス側をArduinoの13と書かれている方へ
  • マイナス側をその隣のGNDに入れましょう
  • ちょいと危ないので先生がチェックして回ります

LEDが光る

  • USBをまたPCにつなぎましょう
  • たぶん光ります
    • 光らない人はすぐ抜いてください。先生がかけつけます
  • 13番ってもしかして……?
  • 13番は中にもつながっているし外にも出ていると先ほど言いました
  • それを使って光らせました

GND

  • GNDは0Vのところです。それだけです。
  • なおさっきから5Vって言っているのはGNDから見て5Vという意味です
  • 電流は電圧の高いところから低いところへ流れます
  • 13番を5VとGNDから見て高くしてやることで電流がLEDに流れます
  • なので5Vと5Vをつなげても電流は流れませんし0V同士でも同様です

LEDを光らせ「ない!」

  • 練習問題です
  • 今の状態でLEDを光らせないようにしてください
  • ヒント: HIGHの反対はLOW

先生の回答


delayで待つ

delay(1000)
  • delayという命令は内容のところに書いた数自分だけ待つという命令です
  • 数字はミリ秒なので1000と書くと1秒分待ちます
  • 練習問題: 1秒光って1秒消灯するようにする
  • いわゆるこれがLチカです

テクニック: 弱く光らせる

digitalWrite(13, HIGH);
delay(1);
digitalWrite(13, LOW);
delay(10);
  • とかやると弱く光ります

説明

"5V一定"

  • ずっとdigitalWrite(13, HIGH)だとこんな感じ

弱く光らせた時の状態

"5V1ms0V10ms"

  • 5Vが1msで0Vが10ms続く

人間の目には高速過ぎて点滅していないように見える

  • ので以下の様な奴とだいたい同じような感じになる

"弱い電圧で光らせたのと同じ"


PWM

  • 専門用語ではPWMと言います
  • Pulse Width Modulation パルス幅制御
  • この場合の幅は時間です
  • もっと高速に細かくやりたい場合はanalogWriteというのがあります
    • ただし 3,5,6,9,10,11ピンのみ限定の機能です

LEDの最後の練習問題

  • 渡したLEDを12番ピンに接続する
    • 接続したの確認しますので先生に見せてください
  • 12番と基板上の13番を1秒ずつ交互に光らせる
  • あと片方弱いとかそういう工夫もあるといいですね!
  • このあたりで休憩?

音を鳴らそう!

  • ブザー配ります
  • こちらも極性ございます
  • 赤い線がプラスで黒い線がマイナスです
  • あと意外に線が細くすぐ抜けるので鳴らす時は手で抑えましょう

tone

tone(12, 440, 300);
  • toneはその周波数の音(波形)を出すための命令です
  • 1個目の内容はピンです。この場合は12番ピンに出します
  • 2個目は周波数です。440Hz = ラです。
  • 3個目はどれだけの時間その音を出し続けるかです
    • この直後にdelayとかやっても鳴り止まないので注意です

練習問題: かえるの歌

  • ド: 262Hz レ: 294Hz ミ: 330Hz
  • ファ: 349Hz ソ: 392Hz ラ: 440Hz
  • ドレミファミレド ミファソラファソミ ド ド ド ド
  • ドドレレミミファファ ミレド

楽になる方法: 変数

int CODE_C = 262; int CODE_D = 294; int CODE_E = 330;
int CODE_F = 349; int CODE_G = 392; int CODE_A = 440;
  • int <変数名> = <数字>;で数字を覚えることが出来ます
tone(12, CODE_A, 300);
  • こんなかんじで数字の代わりに使えます
  • 長さも変数にしてもいいかも

だいたい出来ればよいです


まとめ

  • だいたいArduinoってこんな感じっていうのを知ってもらえたかと思います
  • Arduino、基本的には電気のオンオフしか出来ません
  • ですがそれに特化しているだけあっていろいろ出来ます
  • あと超低消費電力なので電池一本とかで動きます
  • いろんな応用ができると思うので工夫してみてください

質問コーナー

  • 電光掲示板
    • シールド買ってきた デモ
  • エアコンの温度調整
    • IRKit的なこと
    • 赤外線LED
  • iPhoneとの無線通信
  • 暗くなったら照明をつける
    • CdSセンサと赤外線LED
  • Groove System
    • いろいろ出来る
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment