สอบถามเกี่ยวกับ Arduino กับ ปุ่มButton (มี7sigmentนับ0-9 ต้องการให้กดปุ่มแล้วเริ่มนับใหม่)

สวัสดึค่ะ คือเราอยากทราบการเขียนโค้ดว่าจะทำยังไงให้ 7-segment  นับเลขจาก 0-9 ได้ ซึ่งส่วนนี้ทำได้แล้วเพราะเป็นโค้ดที่อ.ให้มา เพียงแต่ติดตรงที่ ทำยังไงให้พอกดปุ่ม button แล้วจะกลับไปนับ 0-9 ใหม่อีกครั้งค่ะ 

ด้านล่างคือโค้ดที่ได้มาค่ะ เรากำลังหาวิธีที่จะทำให้กดปุ่มแล้วกลับไปเริ่มใหม่เรื่อยๆอยู่ ซึ่งไม่รู้ว่าต้องทำยังไง หาวิธีมาเป็นชม.แล้วค่ะ เจอแค่กดแล้วนับเลขเพิ่มหรือปิดเปิดไฟ ซึ่งไม่ใช่ที่เราต้องการเลย T_T

int a = 2; //ขา a ต่อเข้ากับ Pin2
int b = 3; //ขา b ต่อเข้ากับ Pin 3
int c = 4; //ขา c ต่อเข้ากับ Pin 4
int d = 5; //ขา d ต่อเข้ากับ Pin 5
int e = 6; //ขา e ต่อเข้ากับ Pin 6
int f = 7; //ขา f ต่อเข้ากับ Pin 7
int g = 8; //ขา g ต่อเข้ากับ Pin 8
int point = 9; //ขา h หรือจุด ต่อเข้ากับ Pin9
const char BUTTON_PIN = 11;

void setup() {
  pinMode(a,OUTPUT);
  pinMode(b,OUTPUT);
  pinMode(c,OUTPUT);
  pinMode(d,OUTPUT);
  pinMode(e,OUTPUT);
  pinMode(f,OUTPUT);
  pinMode(g,OUTPUT);
  pinMode(point,OUTPUT);
  pinMode(BUTTON_PIN , INPUT_PULLUP);
}

void loop() {
  for(int i=0;i<10;i++)
  {
    showNumber(i);
    delay(1000);
    turnOff(); //ทำการดับไฟทั้งหมดเมื่อกำลังจะเปลี่ยนตัวเลข เพื่อไม่ให้ไฟดวงเดิมค้างสถานะติดไว้
    bool currentState = digitalRead(BUTTON_PIN);
    if(currentState == HIGH){
      //ให้เริ่มนับ0-9ใหม่ งงตรงนี้ ไม่รู้ว่าต้องทำยังไง
    }
  }
}

void showNumber(int number) {
  if(number != 1 && number != 4)
    digitalWrite(a,HIGH);
  if(number !=5 && number !=6)
    digitalWrite(b,HIGH);
  if(number !=2)
    digitalWrite(c,HIGH);
  if(number !=1 && number !=4 && number !=7)
    digitalWrite(d,HIGH);
  if(number==2||number==6||number==8||number==0)
    digitalWrite(e,HIGH);
  if(number !=1 && number !=2 && number !=3 && number !=7)
     digitalWrite(f,HIGH);
  if(number !=0 && number !=1 && number !=7)
    digitalWrite(g,HIGH);
}

void turnOff() {
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
  digitalWrite(point,LOW);
}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่