LED Cubeの第二歩として、3x3を作りました。
LEDは以前にも紹介したかもしれませんがAmazonで安く買える↓を使っています。
※「この商品を買った人はこんな商品も買っています」を探していただくと、1色の組み合わせも売っています。
このとき、LEDをその足を配線として組み立てていく方法があり、↓のページを参考にしました。
http://qiita.com/pictzzz/items/d74050ed0d7ac558571d
横から見ると、LEDのそれぞれの足を、高さを変えて曲げていきます。
このとき、アノードとカソードを確実に区別して、縦のLEDの組み合わせではアノードを共通にし、横のLEDの列はカソードが共通になるようにします。
当然、アノードとカソードはショート(接触)しないようにします。
↓のようにLEDの足を曲げたものを必要数作ります。アノードとカソードは高いほうにするか低いほうにするかは共通にしておきます。
このようにすることで、LEDを並列につなぎやすくなります。
リード線の反対側は、ヘッダピンをつけることで、直接ブレッドボードやマイコンに接続できるようにしました。
ヘッダピンは↓のようなもののオス側だけを使い、リード線にはんだ付けします。
ストレートピンヘッダー,SODIAL(R) 50x単一行40ピン 2.54mm オスピンヘッダーコネクター
- 出版社/メーカー: SODIAL(R)
- メディア: エレクトロニクス
- この商品を含むブログを見る
メモクリップスタンドを、はんだ付けのときのジグ(土台)として使っています。
リード線を支持させて、左側からヘッダピンをピンセットで近づけはんだ付けします。
これは100円ショップで見つけました。
完成すると、ジャンパワイヤーのように使えます。
本当はピンのところに収縮チューブをかぶせると強度や絶縁の観点からもよいです。
出来上がったものがこれ↓
まずは簡単な点灯パターンですが。
今回からシンタックスハイライトを使ってみました。
個人的にはコメントアウトを色つけて欲しいんだけどな…。
http://markup.su/highlighter/
int l, m, n, i, j, k ;
int wait ;
void setup() {
int n = 1;
int i = 1;
for (i = 1; i < 9; i++) {
pinMode(i, OUTPUT);
}
}
void loop() {
// ループで点灯
for (i = 2; i < 9; i++) {
digitalWrite(i, LOW);
}
for(m=1;m<7;m++){ digitalWrite(m, HIGH);
for (n = 2; n < 9; n++) {
digitalWrite(n, HIGH);
delay(50);
digitalWrite(n, LOW);
}
digitalWrite(m, LOW);
}
wait = 100;
int times = 15;
//順番
for(j=1;j< times/2;j++){
LED1();
delay(wait);
LED0();
delay(wait);
LED2();
delay(wait);
LED0();
delay(wait);
LED3();
delay(wait);
LED4();
delay(wait);
LED0();
delay(wait);
LED5();
delay(wait);
LED0();
delay(wait);
LED6();
delay(wait);
LED7();
delay(wait);
LED0();
delay(wait);
LED8();
delay(wait);
LED0();
delay(wait);
LED9();
delay(wait);
}
//縦
for(j=1;j< times/2;j++){
LED1();
delay(wait);
LED0();
delay(wait);
LED4();
delay(wait);
LED0();
delay(wait);
LED7();
delay(wait);
LED2();
delay(wait);
LED0();
delay(wait);
LED5();
delay(wait);
LED0();
delay(wait);
LED8();
delay(wait);
LED3();
delay(wait);
LED0();
delay(wait);
LED6();
delay(wait);
LED0();
delay(wait);
LED9();
delay(wait);
}
//青
for(j=1;j< times;j++){
LED2();
delay(wait);
LED0();
delay(wait);
LED6();
delay(wait);
LED0();
delay(wait);
LED8();
delay(wait);
LED0();
delay(wait);
LED4();
delay(wait);
LED0();
delay(wait);
}
//白
for(j=1;j< times;j++){
LED1();
delay(wait);
LED0();
delay(wait);
LED3();
delay(wait);
LED0();
delay(wait);
LED9();
delay(wait);
LED0();
delay(wait);
LED7();
delay(wait);
LED0();
delay(wait);
}
}
//↓LEDを一つずつONするための関数
int LED1() {
digitalWrite(2, LOW); //LOW
digitalWrite(3, HIGH); //LOW
digitalWrite(4, HIGH); //LOW
digitalWrite(5, LOW); //HIGH
digitalWrite(6, LOW); //HIGH
digitalWrite(8, HIGH); //HIGH
return 0; //計算結果を数値としてもとに戻す必要がないので戻り値は無し
}
int LED2() {
digitalWrite(2, HIGH); //LOW
digitalWrite(3, LOW); //LOW
digitalWrite(4, HIGH); //LOW
digitalWrite(5, LOW); //HIGH
digitalWrite(6, LOW); //HIGH
digitalWrite(8, HIGH); //HIGH
return 0;
}
int LED3() {
digitalWrite(2, HIGH); //LOW
digitalWrite(3, HIGH); //LOW
digitalWrite(4, LOW); //LOW
digitalWrite(5, LOW); //HIGH
digitalWrite(6, LOW); //HIGH
digitalWrite(8, HIGH); //HIGH
return 0;
}
int LED4() {
digitalWrite(2, LOW); //LOW
digitalWrite(3, HIGH); //LOW
digitalWrite(4, HIGH); //LOW
digitalWrite(5, HIGH); //HIGH
digitalWrite(6, LOW); //HIGH
digitalWrite(8, LOW); //HIGH
return 0;
}
int LED5() {
digitalWrite(2, HIGH); //LOW
digitalWrite(3, LOW); //LOW
digitalWrite(4, HIGH); //LOW
digitalWrite(5, HIGH); //HIGH
digitalWrite(6, LOW); //HIGH
digitalWrite(8, LOW); //HIGH
return 0;
}
int LED6() {
digitalWrite(2, HIGH); //LOW
digitalWrite(3, HIGH); //LOW
digitalWrite(4, LOW); //LOW
digitalWrite(5, HIGH); //HIGH
digitalWrite(6, LOW); //HIGH
digitalWrite(8, LOW); //HIGH
return 0;
}
int LED7() {
digitalWrite(2, LOW); //LOW
digitalWrite(3, HIGH); //LOW
digitalWrite(4, HIGH); //LOW
digitalWrite(5, LOW); //HIGH
digitalWrite(6, HIGH); //HIGH
digitalWrite(8, LOW); //HIGH
return 0;
}
int LED8() {
digitalWrite(2, HIGH); //LOW
digitalWrite(3, LOW); //LOW
digitalWrite(4, HIGH); //LOW
digitalWrite(5, LOW); //HIGH
digitalWrite(6, HIGH); //HIGH
digitalWrite(8, LOW); //HIGH
return 0;
}
int LED9() {
digitalWrite(2, HIGH); //LOW
digitalWrite(3, HIGH); //LOW
digitalWrite(4, LOW); //LOW
digitalWrite(5, LOW); //HIGH
digitalWrite(6, HIGH); //HIGH
digitalWrite(8, LOW); //HIGH
return 0;
}
int LED0() {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(8, LOW);
return 0;
}