Arduino で LED を点滅させて遊ぶ

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.4download して使う。

ためしに、登録済みのプログラムを使ってみる。

①ソースファイルを読み込む。
ファイル>スケッチの例>01.Basics>Blink

②接続環境を整える。
未接続状態だと、
ツール>ポート
は空白になっている。

イメージ 1
arduino の USBドライバーが入っていると、PC~USBケーブル~Arduinoと接続すると、COMx を認識する(xは、数字が入る)
この数字は「コンピューターの管理」でも見て取れる。

イメージ 2
↑の場合は、COM5 ですネ。

イメージ 3
ツール>ポート>"COMx" を選択します。で、例の Blink を使ってお試し。

③ソースファイルの検証(コンパイル)を行う。

イメージ 4

左上の (レ)アイコンをクリックする。なにやら動いて、

イメージ 5

コンパイル完了(検証完了)となる。
何らかの原因で検証が不完全だと、赤地に白文字でエラーが出る。

イメージ 8

最後の行、わざと delay()の " )"を削ってみた(笑)。

Arduinoに書き込む。

イメージ 6
(レ)の右横にある、(⇒)アイコンをクリックすると、マイコンボードに書き込みを開始する。

イメージ 7

書き込みが完了すると、書き込み完了のメッセージが出る。
何らかの原因で書き込みが出来ないと、赤地に白文字でエラーが出る。

イメージ 9

わざと、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は脱落者多数の模様(爆))
この話しはまた別の話。