教科書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を全色点灯させ、それそれの端子をテスターでチェックしてみると
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倍出し
ここで面白いと思ったのはカラー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 -黒帯を目指す】番外編 中級者向けにクラス参加してきました
- 参考にしている本ははこちら: arudinoで電子工作を始めよう
- 高橋隆雄先生のブログはこちら: 高橋隆雄の何やかんや
- 利用しているキットはこちら:Arduino エントリーキット(Uno版)- Physical Computing Lab と Arduino拡張キット- Physical Computing Lab
コメント