詳しく解説!!Arduino-その5です。前回の記事はこちらです。
GROVEベースシールドとスケッチ(Fade)
今回は、Arduino Uno用GROVEシステムの中核であるGROVEベースシールドを前回のスケッチ(Fade)の解説も交えて説明していきます。
とりあえず動いたよね!!
とりあえず動きましたね!今回は、外付けの部品を動かしましたよ!!この様に簡単にデバイスを繋げて動かすことができるのは、GROVEシステムの大きな特徴です。でも、具体的にはどう繋がっているのでしょうか?まずは、接続の詳細を見てみましょう。
GROVEベースシールドの接続
GROVEベースシールドを見てみると、両脇にあるHeaderコネクタと16個の4ピンコネクタ(4ピンケーブルが繋がる白いコネクタ)が目に入ります。Headerコネクタは主にArduino UNOからの信号接続(中継)、4ピンコネクタはArduino UNOとデバイスの接続が主な役目です。ベースシールド上には以下のように表示がされています。
今回使用したLEDモジュールは信号1(今回の場合Arduino UNOの3番ピン)だけ使用しています。(LEDモジュールの回路図はこちらです。)
他にも4ピンコネクタがあるのですが、別の機会に説明させていただきます。
スケッチ(Fade)
それではスケッチの解説です。以下に改めてスケッチを載せますね。
int led = 3; int brightness = 0; int fadeAmount = 5; void setup() { pinMode(led, OUTPUT); } void loop() { analogWrite(led, brightness); brightness = brightness + fadeAmount; if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } delay(30); }
setup-その前に
setupとloop-Arduinoのスケッチはこの二つのブロックで構成されていますって、前回説明しましたよね。でも、今回はその前に何やら記述があります。これは、スケッチで使用する数値を記憶する場所を予め確保しているんです。いわゆる変数ってやつです。intは整数の数値を記憶することを意味しています。
スケッチの動き
実際のスケッチの動きです。まずsetupですが前回とほとんど同じです。3番品(LEDモジュールが繋がっているピン)を出力に設定しています。次のloopですが、先頭に新しいコマンドがありますね。
・analogWrite
analogWriteはArduinoのピンの出力状態(0〜255)を設定するコマンドです。以下のように記述します。
analogWrite(ピン番号、出力状態(0〜255));
前回紹介したdigitalWriteも出力状態を設定するコマンドでしたが。こちらは出力を0〜255の256段階で設定できます。
変数brightnessは3番品の主力状態を指定するのに使っています。また、その直後ではbrightnessを変数fadeAmountで指定した分だけ増やしています。
・if文と判定式
その後にあるのはif文です。指定した条件が満たされた時に処理を実行します。以下のように記述します。
if (条件) {
処理内容
}
では、ここで指定されている条件を確認します。brightness <= 0は、brightnessが0以下の時を指定します。brightness >= 255は、brightnessが255以上の時を指定します。間にある || はOR(または)です。つまり、brightnessが0以下か255以上の時・・・という条件ですね。この条件が成立したときにfadeAmountの極性を入れ替えています(+5なら-5、-5なら+5)>。最後の delay(30);は30ミリ秒の時間調整。最後まで行くとloopの先頭に戻るんでしたよね!!
整理すると、このスケッチのloopでは3番ピンの出力値を徐々に増やしていく処理をしているのです。そして、出力が255以上になったら増やす値をマイナスに変更しています(出力が0以下になったら増やす値をプライスに変更する)。こうして出力値が徐々に増減していくのでLEDはふぁーっとした感じで点いたり消えたりするんです。面白いでしょ!!
それにしても analogWrite。0〜255まで変えられるって優れものです。でも本当のこと言うと、このピンもHIGHとLOWしか出力してないんです。
PWM(パルス幅変調)
それは、PWM(パルス幅変調)って仕組みを使っているんです。PWMってどこかで見ませんでしたっけ・・・
analogWriteで指定した出力状態によって以下の様に変わります。
出力状態-0 ⇒ HIGH-0 LOW-1
出力状態-127 ⇒ HIGH-0.5 LOW-0.5
出力状態-255 ⇒ HIGH-0 LOW-1
イメージ的にはパルスがこんな具合に変化する感じですね。
LOWの比が多い(出力状態0に近い)
HIGH/LOW半々(出力状態127くらい)
HIGHの比が多い(出力状態255に近い)
analogWriteは接続したデバイスを細かく制御するときによく使いますので、覚えておきましょう!!
LEDの点灯制御が続きましたが、次は入力用デバイスのボタンモジュールを使ってみたいと思います。
hirocom777.hatenadiary.org