byte seg[] = {2, 3, 4, 5, 6, 7, 8};
byte dig[] = {9,10};
byte sw = 11;
byte num[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0,0x40};//0-9,spc,-
byte disp_dat;
void set_seg(byte dat){
for(byte i=0;i<7;i++)digitalWrite(seg[i],bitRead(num[dat],i));
}
void disp(){
static byte keta;
if(++keta&1){//10の桁
pinMode(dig[0], INPUT);//1の桁を消す
if(disp_dat==0)set_seg(11);//0(「-1」表示)なら「-」
else set_seg(10);//それ以外はスペース
pinMode(dig[1], OUTPUT);//10の桁を点灯
}else{//1の桁
pinMode(dig[1], INPUT);//10の桁を消す
if(disp_dat==1)set_seg(0);//1(「0」表示)なら「0」
else set_seg(1);//それ以外は「1」
pinMode(dig[0], OUTPUT);//1の桁を表示
}
}
void setup() {
for (byte i = 0; i < 7; i++)pinMode(seg[i], OUTPUT);
pinMode(sw, INPUT_PULLUP);
randomSeed(A0);
}
void loop() {
if (digitalRead(sw) == LOW) {
for (byte i = 0; i < 15; i++) { //数回転がして確定させる
disp_dat=random(0,3);
byte ms=random(20,100);
while(ms--){
disp();
delay(1);
}
}
}
disp();
delay(1);
}