Arduino giao tiếp với Button (phần 3):Một nút nhấn điều khiển 2 led đơn theo từng chế độ

Nội dung

  • Sau đây là ví dụ về điều khiển 2 led đơn bằng 1 nút nhấn.

  • Ở chế độ này thì gồm có 4 thao tác khác nhau. Ban đầu ở chế độ 1 chưa nhấn gì thì cả 2 led tắt, ở chế độ 2 khi nhấn nút led 1 sáng/led 2 tắt, ở chế độ 3 khi nhấn nút led 1 tắt/led 2 sáng, và ở chế độ cuối khi nhấn nút thì cả 2 led đều sáng rồi cứ tiếp tục 4 thao tác lặp đi lặp lại.


Về phần cứng

  1. Board mạch Arduino
  2. Nút nhấn (1 cái)
  3. Điện trở 10k ohm (1 cái) và 220 ohm(2 cái)
  4. Led đơn(2 cái)

Sơ đồ lặp mạch





Lập trình



    int switch = 5;              // nút nhấn được kết nối với pin 5

    int led1 = 8;

    int led2 = 9;

    int val;                         // đọc trạng thái pin
    int val2;                       // đọc trạng thái bị trì hoãn
    int buttonState;           // giữ trạng thái nút
    int mode = 0;              // led sẽ sáng ở chế độ nào

void setup () 
{
      pinMode(switch, INPUT);    // đặt nút nhấn làm ngỏ vào
      pinMode(led1, OUTPUT);
      pinMode(led2, OUTPUT);
      buttonState = digitalRead(switch);   // đọc trạng thái ban đầu
}

void loop ()
{
      val = digitalRead(switch);      // đọc giá trị đầu vào và lưu trữ nó trong val
      delay(10);                         // 10 mili giây là thời gian chờ
      val2 = digitalRead(switch);     // đọc lại đầu vào để kiểm tra xem có bị trả lại không
      if (val == val2) // make sure we got 2 consistant readings!
        {                 
        if (val != buttonState) // trạng thái nút đã thay đổi!
            {          
             if (val == LOW)// kiểm tra xem nút có được nhấn hay không
             {                
                     if (Mode == 0) 
                      {          
                       Mode = 1;               
                      }
               else 
               {
                     if (Mode == 1) 
                      {        
                       Mode = 2;           
                      } 
               else 
               {
                    if (Mode == 2) 
                      {      
                       Mode = 3;           
                      } 
               else 
                {
                    if (Mode == 3) 
                      { 
                       Mode = 0;          
                      }
                }
                }
                }
               }
           }
        buttonState = val;                // lưu trạng thái mới trong biến của chúng tôi
      }

      //Thiết lập các chế độ
      if (Mode == 0) 
        {                           
          digitalWrite(led1, LOW);
          digitalWrite(led2, LOW);
        }

      if (Mode == 1) 
        { 
          digitalWrite(led1, HIGH);
          digitalWrite(led2, LOW);
        }

      if (Mode == 2) 
        { 
          digitalWrite(led1, LOW);
          digitalWrite(led2, HIGH);
        }
      if (Mode == 3)  
        { 
          digitalWrite(led1, HIGH);
          digitalWrite(led2, HIGH);
        }    
}

Mô phỏng

Gồm có 4 chế độ xác lập trong lập trình:

  • Ở chế độ ban đầu thì cả 2 led đều ở mức thấp nên cả 2 đều tắt.

Chế độ 1



  • Ở chế độ 2, khi nhấn nút led 1 sáng, led 2 tắt.

Chế độ 2



  • Ở chế độ 3, khi nhấn nút led 1 tắt, led 2 sáng.

Chế độ 3



  • Ở chế độ cuối, khi nhấn nút thì cả 2 led đều ở mức cao nên cả 2 đều sáng.




Chúc các bạn thành công ở bài này! 

6 nhận xét

  1. bạn hướng dẩn minh bài dồng hồ bấm giây dùng 74hc51 đi

    Trả lờiXóa
  2. Ad xem hộ copy về báo lỗi thiếu điều kiện trước '{' là sao ak

    Trả lờiXóa
  3. code sai có nhập đc đâu ad ??

    Trả lờiXóa
  4. Code đúng rồi chỉ bị lỗi trùng từ khoá swicht với bị sai tên biến mode khi khai còn khi dùng lại thành Mode viết hoa.sửa lại là đc

    Trả lờiXóa
  5. code này nên sửa lại như thế nào mới đúng ạ?

    Trả lờiXóa