ワークショップ #00 2014-07-05
- 今回はガイアックス様の会議室を使ってやっています
- 飲食は自由です
- 寒い等あったら言ってください
- 初めての試みなのでおて柔らかに
- わからないことがあったらすぐ聞いてください!!!
- わからないまま進むと必ず不幸になる
- こうしたほうがいいとかそういう意見もください!
- あとArduinoまだささないでください
- Arduino IDEのインストール
- 初めてのLEDチカチカ
- Arduinoのプログラムの書き方の説明
- LEDを挿してチカチカさせる
- 音を鳴らそう
- Arduinoのプログラムを書くときに必要な物が揃ったソフト
- エディタ
- コンパイラ
- 書き込み器
- ライブラリ
- シリアルモニタ
- ではインストールしていきます
- 本家のサイトからダウンロード
- 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わからなかったら対応させてください
- Windowsの方
- Windowsの方
- ダウンロードしたZIPを解凍してどこかわかりやすいところに置きましょう
- 迷っている方はとりあえずデスクトップに置きましょう
- Macの方
- とりあえず解凍しましょう
- Finderで開いたらアプリケーションにドラッグアンドドロップしましょう!
- アプリケーション汚したくないよという方はその場で開いても大丈夫です
- ArduinoはUSBデバイスなので場合によってはドライバが必要です
- そんな対応表がこちら! ☓が対応しないといけなくて、◯は何しなくてよいです
OS \ Arduinoの機種 | Duemilanove以前 | Uno以降 |
---|---|---|
Windows | ◯ | ☓ |
Mac | ☓ | ◯ |
- Linuxは相談させてください。案外挿したら動くかも
- ドライバの入れ方はみなさんでこちらを見ましょう
- ドライバがバグるっぽいです
- Appleのドライバが入ってそっちで使おうとする
- 参考
- 今です! Arduinoを接続してください!
- そんなわけでインストール完了したと思うのでArduino IDEを立ち上げます
- Windowsの方
- ZIPの場合は展開した中のArudinoIDE.exeを開く
- Installerの方はスタートの中にあるはず
- Macの方
- アプリケーションに入れた方はLaunchPadなりで起動しましょう
- そのまま置いとくよ!という方は落としてきて解凍したそいつをダブルクリック
- Linuxの方
- 相談させてください。。。
- ツール -> マイコンボード
- ツール -> シリアルポート
- Windowsの場合
- とりあえず一番でかい数字のCOMなんとかを選ぶ
- Mac
- Duemilanove /dev/tty.usbserial-なんとか
- Uno /dev/usbmodemなんとか
- Linux
- 相談させてください
- 以下を打ってみよう!
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
}
- ウィンドウ左上の右矢印のボタン
- マウスオーバーすると「マイコンボードに書き込む」と出る
- そいつをクリックする!
- 下に「マイコンボードへの書き込みが完了しました。」と出る
- 何が起こったかは自分の目で確認しましょう
- エラーとかあったら個別に対応します
- ほとんどのArduinoにはボード上にいくつかのLEDがあります
- そのうち一個はピン(後述)にすでに接続されているのでなにも繋がなくても使えます
- 今はそれをとりあえず光らせました!
- Arduinoは電圧をかけたり受けたりすることの出来る電極がいくつかあります
- それを
ピン
と言います - 電極を挿せるようになっているピンもあれば中だけで使っているピンもあります
- 先ほどのプログラムは中にも外にもつながっているピンを使いました
void setup() {
void setup()
までがこれから準備に関することを書くよという宣言です{
と}
の間に準備することを書きます
pinMode(13, OUTPUT);
pinMode
は命令です。内容は(
と)
の中に2個書きますpinMode
はピンごとにそれが入力なのか出力なのかを設定する命令です- Arduinoはほとんどのピンで入力と出力どちらにも使えるようになっています
- 1個目はピンの番号です。この場合は13番ピンのことを指します
- 2個目は入力か出力なのかを指定します。
OUTPUT
は出力です- 入力にしたい時は
INPUT
にします
}
- でないと怒られてしまいます
void loop() {
loop
はメインの処理を書いていきます- 最後まで行くとloopの一番上に戻ります(ゆえにループ)
- 以下の様な感じです
digitalWrite(13, HIGH);
digitalWrite
はピンから電圧をかけさせる命令です- この例では13番ピンに対して
HIGH
を書き込んでいます - digitalなので
HIGH
もしくはLOW
です - 電圧でいうところの
5V
と0V
に対応します
- LEDに電圧をかけると光ります!!!!すごい!
- ただし作法がいります
- 電気抵抗をかまさないといけないです
- LED自体は電気抵抗が0オームです
- みなさんオームの法則思い出しましょうオームの法則
- これだけ覚えて><
- Rが電気抵抗でVが電圧、Iが電流です
- 変形するとこうなるわけで
- Vに5V、Rに電気抵抗が0が入ったらどうなるか
- 電流が無限大!?
- 実際には電線だったりLED自体にわずかに電気抵抗があるので無限大にはならない
- でもめっちゃピカって光る そう、燃えるほどに
- それなんで電気抵抗かまして電流を抑えてあげないといけないです
- 13番ピンのLEDには電気抵抗が入っているのでご安心を
- 13番ピンに5Vをかけられました、だからLEDが光りました。
- というわけではないのですが込み入った話はのちほど
- このあたりで休憩?
- 特殊な抵抗入りのLEDです
- 5V専用です
- LEDにはプラス極とマイナス極があります
- 逆にかけると簡単に死にます
- 足が長い方がプラスで短いほうがマイナス側です
- なので基板とかにハンダ付けするときに切っちゃうとあんまりわからなくなります
- まずArduinoをUSBポートから抜きましょう
- Windowsはデバイスの取り外しとか出るかな?
- プラス側をArduinoの
13
と書かれている方へ - マイナス側をその隣の
GND
に入れましょう - ちょいと危ないので先生がチェックして回ります
- USBをまたPCにつなぎましょう
- たぶん光ります
- 光らない人はすぐ抜いてください。先生がかけつけます
- 13番ってもしかして……?
- 13番は中にもつながっているし外にも出ていると先ほど言いました
- それを使って光らせました
- GNDは0Vのところです。それだけです。
- なおさっきから5Vって言っているのはGNDから見て5Vという意味です
- 電流は電圧の高いところから低いところへ流れます
- 13番を5VとGNDから見て高くしてやることで電流がLEDに流れます
- なので5Vと5Vをつなげても電流は流れませんし0V同士でも同様です
- 練習問題です
- 今の状態でLEDを光らせないようにしてください
- ヒント:
HIGH
の反対はLOW
delay(1000)
- delayという命令は内容のところに書いた数自分だけ待つという命令です
- 数字はミリ秒なので1000と書くと1秒分待ちます
- 練習問題: 1秒光って1秒消灯するようにする
- いわゆるこれがLチカです
digitalWrite(13, HIGH);
delay(1);
digitalWrite(13, LOW);
delay(10);
- とかやると弱く光ります
- ずっと
digitalWrite(13, HIGH)
だとこんな感じ
- 5Vが1msで0Vが10ms続く
- ので以下の様な奴とだいたい同じような感じになる
- 専門用語ではPWMと言います
- Pulse Width Modulation パルス幅制御
- この場合の幅は時間です
- もっと高速に細かくやりたい場合は
analogWrite
というのがあります- ただし 3,5,6,9,10,11ピンのみ限定の機能です
- 渡したLEDを12番ピンに接続する
- 接続したの確認しますので先生に見せてください
- 12番と基板上の13番を1秒ずつ交互に光らせる
- あと片方弱いとかそういう工夫もあるといいですね!
- このあたりで休憩?
- ブザー配ります
- こちらも極性ございます
- 赤い線がプラスで黒い線がマイナスです
- あと意外に線が細くすぐ抜けるので鳴らす時は手で抑えましょう
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、基本的には電気のオンオフしか出来ません
- ですがそれに特化しているだけあっていろいろ出来ます
- あと超低消費電力なので電池一本とかで動きます
- いろんな応用ができると思うので工夫してみてください