/*  Bài tập 2. Sử dụng 4 nút ấn điều khiển LED 7 thanh: 
  Ban đầu đèn không sáng, 
  khi ấn nút 1 đèn LED hiển thị số 1, 
  ấn nút 2 hiển thị số 2, 
  ấn nút 3 hiển thị số 3, 
  ấn nút TẮT thì tắt LED */

/*  Chương trình 1: Ngôn ngữ thuần Arduino

  int a = 0;  //Gán chân của LED vào PortD
  int b = 1;
  int c = 2;
  int d = 3;
  int e = 4;
  int f = 5;
  int g = 6;
  int dp = 7;
  int n1 = 8; //Gán nút só 1 vào Pin8
  int n2 = 9; //Gán nút só 2 vào Pin9
  int n3 = 10; //Gán nút só 3 vào Pin10
  int off = 11; //Gán nút só TẮT vào Pin11

  void setup() {
    pinMode(a, OUTPUT); //Khai báo các chân của 7Seg Output
    pinMode(b, OUTPUT);
    pinMode(c, OUTPUT);
    pinMode(d, OUTPUT);
    pinMode(e, OUTPUT);
    pinMode(f, OUTPUT);
    pinMode(g, OUTPUT);
    pinMode(dp, OUTPUT);
    pinMode(n1, INPUT_PULLUP);  //Khai báo các chân của nút bấm là Input_Pullup
    pinMode(n2, INPUT_PULLUP);
    pinMode(n3, INPUT_PULLUP);
    pinMode(off, INPUT_PULLUP);
  }

  void clear() {  //Chương trình phụ để reset các chân
    digitalWrite(a, LOW);
    digitalWrite(b, LOW);
    digitalWrite(c, LOW);
    digitalWrite(d, LOW);
    digitalWrite(e, LOW);
    digitalWrite(f, LOW);
    digitalWrite(g, LOW);
    digitalWrite(dp, LOW);
  }

  void loop() {

    if (digitalRead(n1) == LOW) { //Đọc tín hiệu Nút nhấn 1
      clear();  //Reset các chân cũ
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
    }

    if (digitalRead(n2) == LOW) { //Đọc tín hiệu Nút nhấn 2
      clear();  //Reset các chân cũ
      digitalWrite(a, HIGH);
      digitalWrite(b, HIGH);
      digitalWrite(g, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(d, HIGH);
    }

    if (digitalRead(n3) == LOW) { //Đọc tín hiệu Nút nhấn 3
      clear();  //Reset các chân cũ
      digitalWrite(a, HIGH);
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, HIGH);
      digitalWrite(g, HIGH);
    }

    if (digitalRead(off) == LOW) { //Đọc tín hiệu Nút nhấn TẮT
      clear();
    }
  }

  //Kết thúc chương trình 1
  */

/*  Chương trình 2: Dùng mã Hex xuất tín hiệu ra 1 PORT

  void setup() {
    DDRD = 0xFF; //Khởi tạo PortD với chân Pin 0~7 là cổng Output ra LED
    PORTB = 0x0F; //Khởi tạo PortB chân Pin 8, 9, 10, 11 là INPUT_PULLUP
  }

  void loop() {
    if (digitalRead(8) == LOW) {
      PORTD = 0x06;
    }

    if (digitalRead(9) == LOW) {
      PORTD = 0x5B;
    }

    if (digitalRead(10) ==  LOW) {
      PORTD = 0x4F;
    }

    if (digitalRead(11) == LOW) {
      PORTD = 0x00;
    }
  }
  
  // Kết thúc chương trình 2
  */
$abcdeabcde151015202530fghijfghij