« Arduinoで作ろう(34) 赤外線リモコンカー | トップページ | Arduinoで作ろう(36) 8x8ドットマトリクスLEDでテキストのスクロール »

2019年9月25日 (水)

Arduinoで作ろう(35) 8x8ドットマトリクスLEDで電子サイコロ

8x8led_dice_

 MAX7219というLEDディスプレイドライバが載った8x8ドットマトリクスLEDモジュールを手に入れたので,試しに電子サイコロを作ってみました。
このサイトで手に入れた LedControl.h というライブラリを使います。
タクトスイッチを押すと,くるくる回っているサイコロが止まります。というか,ランダムでサイコロの数字が決まります。

スケッチはコレ→ max7219_8x8_dice.ino

/*
 * MAX7219+8x8dotMatrixLED 電子サイコロ
 */
 
#include <LedControl.h>
int DIN = 8;
int CS =  9;
int CLK = 10;
byte dice[6][8]={
 {0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00}, //1
 {0x03,0x03,0x00,0x00,0x00,0x00,0xC0,0xC0}, //2
 {0x03,0x03,0x00,0x18,0x18,0x00,0xC0,0xC0}, //3
 {0xC3,0xC3,0x00,0x00,0x00,0x00,0xC3,0xC3}, //4
 {0xC3,0xC3,0x00,0x18,0x18,0x00,0xC3,0xC3}, //5
 {0xC3,0xC3,0x00,0xC3,0xC3,0x00,0xC3,0xC3}  //6 
};
LedControl lc=LedControl(DIN,CLK,CS,1);

void setup(){
 lc.shutdown(0,false);      
 lc.setIntensity(0,5);
 lc.clearDisplay(0);
}

void loop(){
 if (digitalRead(12) == HIGH){
    for (int i = 0; i < 6; i ++) {
    printByte(dice[i]);
    delay(50);
    }
 }
 else{
  randomSeed(analogRead(A0));
  int randnumber = random(0, 5);
  printByte(dice[randnumber]);
  delay(3000);
 }
}

void printByte(byte character []){
  int i = 0;
  for(i=0;i<8;i++){
    lc.setRow(0,i,character[i]);
  }
}

 

|

« Arduinoで作ろう(34) 赤外線リモコンカー | トップページ | Arduinoで作ろう(36) 8x8ドットマトリクスLEDでテキストのスクロール »

Arduino」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« Arduinoで作ろう(34) 赤外線リモコンカー | トップページ | Arduinoで作ろう(36) 8x8ドットマトリクスLEDでテキストのスクロール »