/* Code 1: Lập trình tương tự như LED đơn
  
  int a = 2;
  int b = 3;
  int c = 4;
  int d = 5;
  int e = 6;
  int f = 7;
  int g = 8;
  int dp = 9;

  void setup() {
    //Khai báo các pin tín hiệu Output
    pinMode(a, OUTPUT);
    pinMode(b, OUTPUT);
    pinMode(c, OUTPUT);
    pinMode(d, OUTPUT);
    pinMode(e, OUTPUT);
    pinMode(f, OUTPUT);
    pinMode(g, OUTPUT);
    pinMode(dp, OUTPUT);
    }

  void loop()  {
    //Số 0
      digitalWrite(a, HIGH);
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(f, HIGH);
      digitalWrite(g, LOW);
      digitalWrite(dp, LOW);
      delay(1000);

    //Số 1
      digitalWrite(a, LOW);
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      digitalWrite(dp, LOW);
      delay(1000);
    
    //Số 2
      digitalWrite(a, HIGH);
      digitalWrite(b, HIGH);
      digitalWrite(c, LOW);
      digitalWrite(d, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(f, LOW);
      digitalWrite(g, HIGH);
      digitalWrite(dp, LOW);
      delay(1000);

    //Số 3
      digitalWrite(a, HIGH);
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, HIGH);
      digitalWrite(e, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, HIGH);
      digitalWrite(dp, HIGH);
      delay(1000);

    //Số 4
      digitalWrite(a, LOW);
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, HIGH);
      digitalWrite(g, HIGH);
      digitalWrite(dp, LOW);
      delay(1000);
    
    //Số 5
      digitalWrite(a, HIGH);
      digitalWrite(b, LOW);
      digitalWrite(c, HIGH);
      digitalWrite(d, HIGH);
      digitalWrite(e, LOW);
      digitalWrite(f, HIGH);
      digitalWrite(g, HIGH);
      digitalWrite(dp, LOW);
      delay(1000);
    }

    */

/* Code 1.1: Lập trình tương tự như LED đơn - khai báo trước các chân PIN

  int a = 2; //Khai báo gán các chân Pin với các chân của LED
  int b = 3; 
  int c = 4; 
  int d = 5; 
  int e = 6; 
  int f = 7; 
  int g = 8; 
  int dp = 9; 
  
  void num1() { //Khai báo các chân Pin của số 1
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    } 

  void num2() {  //Khai báo các chân Pin của số 2
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(d,HIGH);
    }
  
  void num3() { //Khai báo các chân Pin của số 3 
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(g,HIGH);
    }

  void num4() { //Khai báo các chân Pin của số 4
    digitalWrite(f,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(c,HIGH);
    } 

  void num5() { //Khai báo các chân Pin của số 5
    digitalWrite(a,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    } 

  void num6() { //Khai báo các chân Pin của số 6 
    digitalWrite(a,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);  
    } 

  void num7() { //Khai báo các chân Pin của số 7
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    }
  
  void num8() { //Khai báo các chân Pin của số 8
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);  
    digitalWrite(e,HIGH);  
    digitalWrite(f,HIGH);
    } 

  void num9() { //Khai báo các chân Pin của số 8
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);  
    digitalWrite(f,HIGH);
    } 

  void num0() { //Khai báo các chân Pin của số 0 
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);  
    digitalWrite(e,HIGH);
    digitalWrite(f,HIGH);
    }
    
  void clear() {  //Reset lại màn hình 
    digitalWrite(a,LOW);
    digitalWrite(b,LOW);
    digitalWrite(c,LOW);
    digitalWrite(d,LOW);  
    digitalWrite(e,LOW);  
    digitalWrite(f,LOW);
    digitalWrite(g,LOW);
    }

  void setup() {  //Khai báo các chân Pin là chân Output 
    int i;
    for(i = 2; i <= 9; i++)
      pinMode(i,OUTPUT);
    } 

  void loop() { //Vòng lặp hiển thị từ 0~9 delay 0.5s     
    while(1) {

      clear();
      num0(); 
      delay(500); 
      
      clear();
      num1(); 
      delay(500); 
      
      clear();
      num2();
      delay(500); 
      
      clear();
      num3();
      delay(500);

      clear();
      num4(); 
      delay(500);

      clear(); 
      num5(); 
      delay(500);

      clear();
      num6(); 
      delay(500);

      clear(); 
      num7(); 
      delay(500);
      
      clear();
      num8();  
      delay(500);

      clear();  
      num9(); 
      delay(500);      
      }
    }

  */

/* Code 2: Lập trình cho từng số theo kiểu mảng cho từng số

  void setup() {
    for(int pin = 1 ; pin <= 8 ; pin++){
      //Khai báo chân kết nối với LED 7 đoạn
      //Các DP-G-F-E-D-C-B-A lần lượt tương ứng với pin 2-3-4-5-6-7-8-9
      pinMode(pin, OUTPUT);
      }
    }

  void loop() {

    // hiển thị số 0
      int n0[] = {1,1,1,1,1,1,0,0};  //Khai báo mảng bật chân pin tương ứng
      for(int pin = 2; pin <= 9 ; pin++) //Giải thích vòng lặp for: Vòng lặp bắt đầu quyét từ chân Pin 2~9, sau mỗi vòng lặp chân Pin tăng 1 đơn vị
      digitalWrite(pin,n0[pin-2]);  //Lệnh Write chân Pin số 2, sẽ lấy giá trị 0 hoặc 1 ở mảng n0[vị trí thứ 2-2]
      //tạo trễ 1s
      delay(1000);

    // hiển thị số 1
      int n1[] = {0,1,1,0,0,0,0,0};
      for(int pin = 2; pin <= 9 ; pin++)
      digitalWrite(pin,n1[pin-2]);
      delay(1000);

    // hiển thị số 2
      int n2[] = {1,1,0,1,1,0,1,0};
      for(int pin = 2; pin <= 9 ; pin++)
      digitalWrite(pin,n2[pin-2]);
      delay(1000);

    // hiển thị số 3
      int n3[]={1,1,1,1,0,0,1,0};
      for(int pin = 2; pin <= 9 ; pin++)
      digitalWrite(pin,n3[pin-2]);
      delay(1000);

    // hiển thị số 4
      int n4[]={0,1,1,0,0,1,1,0};
      for(int pin = 2; pin <= 9 ; pin++)
      digitalWrite(pin,n4[pin-2]);
      delay(1000);

    // hiển thị số 5
      int n5[]={1,0,1,1,0,1,1,0};
     for(int pin = 2; pin <= 9 ; pin++)
     digitalWrite(pin,n5[pin-2]);
     delay(1000);

    // hiển thị số 6
     int n6[]={1,0,1,1,1,1,1,0};
     for(int pin = 2; pin <= 9 ; pin++)
     digitalWrite(pin,n6[pin-2]);
     delay(1000);

    // hiển thị số 7
     int n7[]={1,1,1,0,0,0,0,0,0};
     for(int pin = 2; pin <= 9 ; pin++)
     digitalWrite(pin,n7[pin-2]);
     delay(1000);

    // hiển thị số 8
      int n8[]={1,1,1,1,1,1,1,0};
     for(int pin = 2; pin <= 9 ; pin++)
     digitalWrite(pin,n8[pin-2]);
     delay(1000);

   // hiển thị số 9
     int n9[]={1,1,1,1,0,1,1,0};
     for(int pin = 2; pin <= 9 ; pin++)
     digitalWrite(pin,n9[pin-2]);
     delay(1000);
  }
  
  */