void display(int tab);
// C++ code
//
int i;
//數字 dot g f e d c b a
// 0 0 0 1 1 1 1 1 1 0x3f
char num_tab[]={
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7d, // 6
0x07, // 7
0x7F, // 8
0x6F, // 9
};
//a,b,c,d,e,f,g,dt
int seg[]={15,2,0,4,16,17,5,18};
int push=19,counter=0;
void setup()
{
pinMode(push, INPUT_PULLUP);
for (i=0;i<9;i++)
pinMode(seg[i], OUTPUT);
display(num_tab[counter]);
}
int stop=1,old=1,data;
void loop()
{
data=digitalRead(push);
if (data==0 && old==1)
stop=-stop;
if (stop==-1){
counter=(counter+1)%10;
display(num_tab[counter]);
}
delay(200);
old=data;
}
void display(int tab)
{
for (int i = 0; i < 7; i++) {
int bit = (tab >> i) & 1; // 使用位移運算和AND操作提取每一位
digitalWrite(seg[i],bit);
}
}