読者です 読者をやめる 読者になる 読者になる

プログラミング素人のArduino

技術屋の末端。プログラミングは専門外。 電気回路も専門外です。 コードに間違いなど見つけられたら、気軽にコメントください。 VC#始めました。

LED Cube (3x3)

ブログ Arduino

LED Cubeの第二歩として、3x3を作りました。

LEDは以前にも紹介したかもしれませんがAmazonで安く買える↓を使っています。
SODIAL(R) 100 5mm赤い、緑、青い、黄色い、白いのLED電球
※「この商品を買った人はこんな商品も買っています」を探していただくと、1色の組み合わせも売っています。



このとき、LEDをその足を配線として組み立てていく方法があり、↓のページを参考にしました。
http://qiita.com/pictzzz/items/d74050ed0d7ac558571d



横から見ると、LEDのそれぞれの足を、高さを変えて曲げていきます。
このとき、アノードとカソードを確実に区別して、縦のLEDの組み合わせではアノードを共通にし、横のLEDの列はカソードが共通になるようにします。
当然、アノードとカソードはショート(接触)しないようにします。

↓のようにLEDの足を曲げたものを必要数作ります。アノードとカソードは高いほうにするか低いほうにするかは共通にしておきます。
このようにすることで、LEDを並列につなぎやすくなります。


リード線の反対側は、ヘッダピンをつけることで、直接ブレッドボードやマイコンに接続できるようにしました。

ヘッダピンは↓のようなもののオス側だけを使い、リード線にはんだ付けします。
SODIAL (R)10x プラス 、 10x マイナス単一の行の40ピン



メモクリップスタンドを、はんだ付けのときのジグ(土台)として使っています。
リード線を支持させて、左側からヘッダピンをピンセットで近づけはんだ付けします。
これは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;
}