int seg7_one_array[]={2,3,4,5,6,7,8};
int seg7_table[]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90};
int debounce_delay=50;
int btn=9;
int num_val;
int num_key=0;
int cnt_val;
void setup()
{
pinMode(btn,INPUT);
for(int i=0;i<7;i++)
{
pinMode(seg7_one_array[i],OUTPUT);
digitalWrite(seg7_one_array[i],LOW);
}
}
//---------------------------
void outport(byte data)
{
for(int j=0;j<7;j++)
{
if(data %2==1)
digitalWrite(seg7_one_array[j],HIGH);
else
digitalWrite(seg7_one_array[j],LOW);
data=data/2;
}
}
void loop()
{
for(int j=0;j<8;j++)//此行加不加都不effect結果
{
digitalWrite(seg7_one_array[j],LOW);
}
num_val=digitalRead(btn);
if(num_val==LOW)//你有壓按鈕,讀值為0條件成立才會進來
{
delay(debounce_delay);
while(digitalRead(btn)==LOW);
num_key++;//數值加1,判斷奇偶數
}
if(num_key%2==0)//一開機num_key你初值設為0,所以進來就上數
{//每次加1,偶數奇數一直輪流,你壓一下奇數,再壓一下偶數
if(cnt_val==9)//偶數就上數
cnt_val=0;
else
cnt_val++;
}
else
{
if(cnt_val==0)//奇數就下數
cnt_val=9;//上下數計數值要一樣,因為切數過去可以數字連續上數或下數
else
cnt_val--;
}
outport(seg7_table[cnt_val]);
delay(1000);//你要加delay 1秒,否則7段顯示器會全亮
}
沒有留言:
張貼留言