プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

LED Cube (3x3)

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

LEDは以前にも紹介したかもしれませんがAmazonで安く買える↓を使っています。

 


※「この商品を買った人はこんな商品も買っています」を探していただくと、1色の組み合わせも売っています。

f:id:s51517765:20190105114756j:plain



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

f:id:s51517765:20190105114808j:plain


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

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

f:id:s51517765:20190105114708j:plain




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

ヘッダピンは↓のようなもののオス側だけを使い、リード線にはんだ付けします。

 

f:id:s51517765:20190105114723j:plain



メモクリップスタンドを、はんだ付けのときのジグ(土台)として使っています。
リード線を支持させて、左側からヘッダピンをピンセットで近づけはんだ付けします。
これは100円ショップで見つけました。

完成すると、ジャンパワイヤーのように使えます。
本当はピンのところに収縮チューブをかぶせると強度や絶縁の観点からもよいです。

f:id:s51517765:20190105114736j:plain



出来上がったものがこれ↓



まずは簡単な点灯パターンですが。

今回からシンタックスハイライトを使ってみました。
個人的にはコメントアウトを色つけて欲しいんだけどな…。
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;
}