#016 【49歳から始めるArduino -黒帯を目指す】黄帯編5 ついにカラーLEDでディスコだ

 教科書p74の2-3です。ディスコっていうとなんだが80年代の雰囲気ですが、ここバルセロナではしっかりこの言葉は現役です。今回も簡単ですの、教科書通り組み立て、スケッチをしてみてください。

 ここで面白いと思ったのはカラーTVで黒がすごいとかよく宣伝を聞きますが、確かにこのフルカラーLEDでは色出るが、黒は出ません。他の仕組みが必要でなこと実感しました。またLEDのアノードとカソードの場所が異なるケース(長いのがアノードもしくはカソード)があり、これは一旦スケッチを書いてしまったら、変更は面倒だなぁと。これを知ることは、とても良い勉強になりました。

 今回のスケッチでは乱数発生と配列を学びます。

配列はここー> int led_pins[] = {9,10,11};

 早速p76のスケッチにシリアルモニーター用のコードを入れて光らせみると、シリアルモニターではちゃんと3種のLEDが光るようになっているのですが、2色+発色なしとなっています。仕方がないので、LEDの発色を一つづつ確かめたところ、led_pins[0]の時に点灯しません。LEDが死んだのかなと思いつつ、まさかの回路点検をすると配線が間違って{10.11,12}に刺さっていました。字が小さすぎる。。。そしてよくこの間違いはします

参考前にモニターできるスケッチはこちらです(コメントは行数短縮のため削除してあります。)

int led_pins[] = {9,10,11};

void setup() {
  int i;

  for(i=0;i<3;i++){
    pinMode(led_pins[i],OUTPUT);
  }
  Serial.begin(9600);
}

void loop() {
  int i,j;
  for(j=0;j<3;j++){
    Serial.print("LED LOW: ");
    Serial.print(j);
    Serial.print(" ");
    digitalWrite(led_pins[j],LOW);
    delay(1000);

    digitalWrite(led_pins[j],HIGH);
    Serial.print("LED HIGH: ");
    Serial.print(j);
    Serial.println(" ");
    delay(1000);
  }
}

おまけ:3色LEDを全色点灯させ、それそれの端子をテスターでチェックしてみると
a: 2.1V 3.9mA
b: 2.2V 4.2mA
c: 3.1V 5.8mA
となりました。同じではないのですね。ちょっとびっくりでした。

 p79ではanalogWriteで変化させています。やはりこれもシリアルモニターを利用して3つのLEDの変化をみてみましょう。


参考までにコードをのせます。色の部分がつけたしたものです。このコードだと、全開から消灯となるループを繰り返します。

#define LED_PIN 11

void setup(){
  pinMode(LED_PIN,OUTPUT);
  Serial.begin(9600);
}

void loop(){
  int i;

  for(i=0;i<256;i++){
    Serial.print("Analog input value: ");
    Serial.println(i);
    analogWrite(LED_PIN,i);
    delay(5);
  }
}

 p82のスケッチ6でのrandomはちょっと理解に苦しみました。そこでシリアルにpin番号を出力するようにして観察しました。ここではループ内での動きは確認できるのですが、他のLEDの状態を同時に観察するアイディアがなく、困りました。理想はLED 0-XXX LED 1-YYY LED2-ZZZなのですが、上手にいきませんでした。もしどなたかわかるようであればおしえてください。

 余談ですが、突然テスターでの計測が不可能になりました。テスターを飛ばしてしまったのかと、正直困りました。でしばらくいろいろテストすると、メーターはしっかり表示しているが、反応していないだけだとの結論に達した途端、ポロっと落ちてきました。断線です。対して使っていないのに、こんなこともあるのですね。


#015【49歳から始めるArduino -黒帯を目指す】黄帯編4 PWMでLチカ4倍出し
#017 【49歳から始めるArduino -黒帯を目指す】番外編 中級者向けにクラス参加してきました

コメント