2021年8月18日 星期三

cnt_val 上下數 七段顯示器 + btn

 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段顯示器會全亮

}

沒有留言:

張貼留言

algorithm

 #include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv)  { for(int j=2;j<=100;j++)//j...