LEDキューブ サンプルプログラムを公開!
こんにちは!
現在も母校で展示され続けているLEDキューブのプログラムを、公開したいと思います!
LEDキューブ製作挑戦者方々のお役に少しでも立てればと思います^^
作り方はこちら
母校に展示されているLEDキューブは8×8×8=512個 + 3色LEDを4個使用しています。
(キューブの角に3色LEDを付けています!)
それも含めたプログラムになります!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
#define SS 10 #define BE 500 // 音の長さを指定 #define PINNO 12 // 圧電スピーカを接続したピン番号 // シフトレジスタの数 #define SREG_NUM 10 /*作り方 誰でも簡単に8×8×8LEDキューブのプログラムを作れます。 ①パターン・光り方作成 ②動き、センサーとの動作作成 以上 */ /*テンプレート B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, //全部消灯 B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, //全部点灯 */ // ①パターン・光り方作成 byte pattern1[] = { // B00000000,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, // 青 緑赤 1 8 16 24 32 40 48 56 64 B11111000, B00000000, B00000000, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11110100, B00000000, B11111111, B00000000, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11110010, B00000000, B11111111, B11111111, B00000000, B11111111, B11111111, B11111111, B11111111, B11111111, B11110001, B00000000, B11111111, B11111111, B11111111, B00000000, B11111111, B11111111, B11111111, B11111111, B11110000, B10000000, B11111111, B11111111, B11111111, B11111111, B00000000, B11111111, B11111111, B11111111, B11110000, B01000000, B11111111, B11111111, B11111111, B11111111, B11111111, B00000000, B11111111, B11111111, B11110000, B00100000, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B00000000, B11111111, B11110000, B00010000, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B00000000, B11110000, B00001000, B01111111, B01111111, B01111111, B01111111, B01111111, B01111111, B01111111, B01111111, B11110000, B00000100, B10111111, B10111111, B10111111, B10111111, B10111111, B10111111, B10111111, B10111111, B11110000, B00000010, B11011111, B11011111, B11011111, B11011111, B11011111, B11011111, B11011111, B11011111, B11110000, B00000001, B11101111, B11101111, B11101111, B11101111, B11101111, B11101111, B11101111, B11101111, B11110000, B11000000, B11110111, B11110111, B11110111, B11110111, B11110111, B11110111, B11110111, B11110111, B11110000, B00110000, B11111011, B11111011, B11111011, B11111011, B11111011, B11111011, B11111011, B11111011, B11110000, B00001100, B11111101, B11111101, B11111101, B11111101, B11111101, B11111101, B11111101, B11111101, B11110000, B00000011, B11111110, B11111110, B11111110, B11111110, B11111110, B11111110, B11111110, B11111110, }; byte pattern_len1 = 16; //パターンの個数 void setup() { Serial.begin(9600) ; // 9600bpsでシリアル通信のポートを開きます //SPI設定 SPI.begin(); SPI.setBitOrder(LSBFIRST); SPI.setClockDivider(SPI_CLOCK_DIV4); // 16MHz/2 = 8MHz SPI.setDataMode(SPI_MODE3); pinMode(SS, OUTPUT); digitalWrite(SS, HIGH); //段を初期化(iを2から始めている理由は忘れました) for (int i = 2; i < 10; i++) { pinMode(i, OUTPUT); } //全段消灯 for (int i = 2; i < 10; i++) { digitalWrite(i, HIGH); } } //メイン void loop() { int k = 200; //下から1段ずつ光らせてく。 for (int i = 2; i < 10; i++) { digitalWrite(i, LOW); tone(PINNO, k = k + 32 + (i * 3), BE) ; //何番目のLEDを点灯させるか読み込むみ光らせてく。 for (unsigned int pat = 0; pat < pattern_len1 * SREG_NUM; pat += SREG_NUM) { digitalWrite(SS, LOW); for (unsigned int sr = 0; sr < SREG_NUM; sr++) { SPI.transfer(pattern1[pat + sr]); //①で作成したpattern1を適用 } digitalWrite(SS, HIGH); delay(100); //1列0.1秒ずつ光らせる } } } |
(非常にわかりずらくて申し訳ないです(;^ω^))
※Arduinoの12番pinに圧電スピーカを接続させれば音も鳴るようになります。
以上、少しでも参考になれば幸いです(;^ω^)
ご不明点等ございましたらお気軽にコメント下さい^^
2件のフィードバック