arduino の話しをちょっと真面目に書いてみます。
まず、osoyoo 製 Arduino を買った。
コレを買ったのは、セット内容が充実してたから。
その割りに、付属品は使わずに、ほとんどを秋月電子で買ってもーた(笑)
・Arduino R3 互換ボード1個
・USBケーブル1本
・CMOS-IC 74HC595 シフトレジスター1個
・1602 16×2 LCD キャラクタ ディスプレイ1個
・4桁LEDデジタル表示管(通称:7セグx4桁)1個
・1桁LEDデジタル表示管(通称:7セグx1桁)1個
・LED4色24個 タクトスイッチ10個
・温度センサー1個
・傾斜センサー1個
・ステッピングモーター&ドライバ1セット
・マイクロサーボ 1個
・DC5V ブザー1個
・赤外線リモコン1個
・赤外線レシーバー1個
・光センサー6個
・10KΩ可変抵抗器3個
・200オーム抵抗20本
・1Kオーム抵抗20本
・10Kオーム抵抗20本
・1Mオーム抵抗5本
・10cm ジャンパワイヤ(オス~オス)40本
・20ピン20cmジャンパワイヤ(オス~オス)1本
・4ピン20cmジャンパワイヤ(メス~メス)2本
・8ピン20cmジャンパワイヤ(メス~メス)1本
・ブレッドボード1個
ただ、こいつには、ソフト関連が一切添付されてない。
ソフトは、ここから download してくることになる。
現在の最新版は、ARDUINO 1.6.5 なのだが、なぜかスケッチのコンパイルがエラーしてしまう。
調べるのが面倒なので(ぉぃ)、ひとつ古い ARDUINO 1.6.4 をdownload して使う。
ためしに、登録済みのプログラムを使ってみる。
①ソースファイルを読み込む。
ファイル>スケッチの例>01.Basics>Blink
②接続環境を整える。
未接続状態だと、
ツール>ポート
は空白になっている。
arduino の USBドライバーが入っていると、PC~USBケーブル~Arduinoと接続すると、COMx を認識する(xは、数字が入る)
この数字は「コンピューターの管理」でも見て取れる。
↑の場合は、COM5 ですネ。
ツール>ポート>"COMx" を選択します。で、例の Blink を使ってお試し。
③ソースファイルの検証(コンパイル)を行う。
左上の (レ)アイコンをクリックする。なにやら動いて、
コンパイル完了(検証完了)となる。
何らかの原因で検証が不完全だと、赤地に白文字でエラーが出る。
最後の行、わざと delay()の " )"を削ってみた(笑)。
④Arduinoに書き込む。
(レ)の右横にある、(⇒)アイコンをクリックすると、マイコンボードに書き込みを開始する。
書き込みが完了すると、書き込み完了のメッセージが出る。
何らかの原因で書き込みが出来ないと、赤地に白文字でエラーが出る。
わざと、USB接続をはずして書き込んでみた(^^;
⑤Arduinoでイロイロお試し。
Arduino オンボードでできることは限られるので、その中の範囲で。。。
お試しプログラム blink の中にある
delay(1000); // wait for a second
こいつは、delay関数です。
効能は、
Pauses the program for the amount of time (in miliseconds) specified as parameter. (There are 1000 milliseconds in a second.)
うわ。英語だ(笑)
日本語に意訳すると、
「プログラムを指定した時間(単位はミリ秒(ms))だけ止めます。1秒は、1000ms です。」
たぶん、こんな感じ。仕事でもこんな感じで済ませて・・・(ぉぃ
従って、delay(1000)というのは、この行で1秒止まる、ということ。
なので、この 1000の数字を変えると、いろいろな点滅が楽しめます(笑)
digitalWrite(13, HIGH); // LEDを光らせる
delay(1000); // 1秒待ち
digitalWrite(13, LOW); // LEDを消灯
delay(1000); // 1秒待ち
となっていて「1秒点灯+1秒消灯」の繰り返しになっているので、
2箇所を500にすると、「0.5秒点灯+0.5秒消灯」の点滅
2000, 250 にすると、「2秒点灯+250m秒消灯」の点滅になる。
こんな感じ(↓)にすると、三三七拍子っぽい点滅になりる(笑)
だらだら ON/OFFを羅列してもよかったのですが、
for 文を使って、ちょっとだけ、それらしいプログラムに改造(爆)
void loop() {
int i,j;
for(j=0;j<2;j++){ // 4拍子を2回
for(i=0;i<3;i++){ // 三拍分
digitalWrite(13, HIGH); // 点灯
delay(250); // 250ms 点灯(一拍)
digitalWrite(13, LOW); // 消灯
delay(250); // 250ms 消灯
}
delay(750); // 250ms消灯+500ms(一拍)消灯
}
for(i=0;i<7;i++){ // 七拍分
digitalWrite(13, HIGH); // 点灯
delay(250); // 250ms点灯
digitalWrite(13, LOW); // 消灯
delay(250); // 250ms消灯
}
delay(750); // 250ms消灯+500ms(一拍)消灯
}
というわけで、arduino ボード上の LED が点滅できることは簡単に出来ました!
ところが、osoyoo の 1602 LCD の動きが非常に怪しい。
動作が不安定すぎる。
たぶん、これは osoyoo の 1602 LCD の問題のような気がする。
(ググって見ても、I2Cは脱落者多数の模様(爆))
この話しはまた別の話。