/* Đề bài:
  Điều khiển 8 Led nháy:
  - sáng toàn bộ trong 2s
  - sáng 4 đèn phải trong 2s
  - sáng 4 đèn trái trong 2s
  */
/*  1. Chương trình bình thường

  //Gán giá trị các pin
    int L1 = 6;
    int L2 = 7;
    int L3 = 8;
    int L4 = 9;
    int L5 = 10;
    int L6 = 11;
    int L7 = 12;
    int L8 = 13;

  void setup() {
    pinMode(L1, OUTPUT);
    pinMode(L2, OUTPUT);
    pinMode(L3, OUTPUT);
    pinMode(L4, OUTPUT);
    pinMode(L5, OUTPUT);
    pinMode(L6, OUTPUT);
    pinMode(L7, OUTPUT);
    pinMode(L8, OUTPUT);
    }

  void loop() {
    // Sáng toàn bộ đèn trong 2s
      digitalWrite(L1, HIGH);
      digitalWrite(L2, HIGH);
      digitalWrite(L3, HIGH);
      digitalWrite(L4, HIGH);
      digitalWrite(L5, HIGH);
      digitalWrite(L6, HIGH);
      digitalWrite(L7, HIGH);
      digitalWrite(L8, HIGH);
      delay(2000);

    //Sáng 4 đèn phải trong 2s - là tắt 4 đèn trái
      digitalWrite(L5, LOW);
      digitalWrite(L6, LOW);
      digitalWrite(L7, LOW);
      digitalWrite(L8, LOW);
     delay(2000);

    //Sáng 4 đèn trái trong 2s - là tắt 4 đèn phải và bật lại 4 đèn trái
      digitalWrite(L5, HIGH);
      digitalWrite(L6, HIGH);
      digitalWrite(L7, HIGH);
      digitalWrite(L8, HIGH);

      digitalWrite(L1, LOW);
      digitalWrite(L2, LOW);
      digitalWrite(L3, LOW);
      digitalWrite(L4, LOW);

      delay(2000);
    }

  */

//  2. Chương trình xuất tin hiệu ra 1 cổng (8 bit) bằng số HEX

  // Trong C/C++ kí tự "0x" được sử dụng làm tiền tố cho các số thập lục phân, chẳng hạn "0x5A3". Số không (0) dẫn đầu được dùng để bộ thanh lọc mã (parser) có thể trực tiếp nhận biết một con số, trong khi chữ "x" đại biểu cho chữ hexadecimal (thập lục phân). Chữ "x" trong tiền tố "0x" có thể được viết hoa (0X) hoặc viết thường (0x), song thường thấy được viết thường
  // Gán các giá trị
    void setup()  {
      DDRB = 0x3F;  //Khai báo Pin Output là Port B (từ Pin 8~13)
      //1F là 0001 1111 tứ là ở chân Pin số 8, 9, 10, 11, 12, 13
      DDRD = 0xC0;  //Khai báo Pin Output là Port D (từ Pin 0~7)
      // C0 là 1100 0000 tức là ở chân Pin số 6, 7
      
      }

    void loop() {
      // Bật toàn bộ đèn
      PORTB = 0x3F;
      PORTD = 0xC0;
      delay(2000);
      
      // Tắt 4 LED bên trái - 4 LED phải giữ nguyên;
      PORTB = 0x03;
      delay(2000);
      
      //Tắt 4 LED phải - Bật lại 4 LED Trái;
      PORTB = 0x3C;
      PORTD = 0x00;
      delay(2000);
  
      }

  //

/*  3. Chương trình khai báo bằng biến mảng
  
  //Gán các giá trị
    byte led[] = {6,7,8,9,10,11,12,13};
    //Các đèn LED sử dụng theo thứ tự từ 0->7.
    //Mảng lưu vị trí các chân Digital

  void setup() {
    for (int i = 0; i < 8; i++)
      pinMode(led[i],OUTPUT);  //Các chân LED là OUTPUT
      }

  void loop() {
    //Bật tất cả các đèn LED
      for (int i = 0; i < 8; i++) {
        digitalWrite(led[i],HIGH); 
        //Bật đèn
        }
      delay(2000);

    //Tắt các đèn LED bên trái - Bật các đèn LED bên phải
      for (int i = 4;i < 8; i ++) {
        digitalWrite(led[i],LOW); 
        // Tắt đèn
        }
      delay(2000);

    //Tắt các đèn LED bên phải - Bật các đèn LED bên trái
      for (int i = 4; i < 8; i ++) {
        digitalWrite(led[i], HIGH);
        }
      for (int i = 0; i < 4; i ++)  {
        digitalWrite(led[i], LOW);
        }
      delay(2000);
  
  }

  */
    
$abcdeabcde151015202530fghijfghij