MATHANGSPK BLOG

Chia sẽ các thủ thuật về máy tính, tin học, các kiến thức điện tử cơ bản

Thứ Sáu, 12 tháng 7, 2019

Điều khiển nút nhấn Arduino toggle LED - Phần 2

Ở phần trước mình đã giới thiệu đến với các bạn các thao tác điều khiển nút nhấn trong arduino ở mức độ đơn giản, ở bài này mình sẽ giới thiệu tiếp cho các bạn các cách điều khiển nút nhấn ở mức độ sâu hơn.
Nếu các bạn thấy khó hiểu ở bài này có thể quay lại bài này để tìm hiểu lại từ đầu. Tại đây

Đề bài đặt ra như sau: Nhấn nút nhấn lần thứ nhất LED sáng, khi nhã ra LED vẫn sáng, nhấn lần thứ 2 LED tắt, nhã ra LED vẫn tắt, cứ tuần tự như vậy.

// Define the pins being used
int pin_LED = 10;
int pin_switch = 2;
 
// variables to hold the new and old switch states
boolean oldSwitchState = LOW;
boolean newSwitchState = LOW;
 
boolean LEDstatus = LOW;
 
void setup() 
{
    pinMode(pin_LED, OUTPUT);  
    digitalWrite(pin_LED,LOW); 
 
    pinMode(pin_switch, INPUT); 
}
 
void loop()
{
    newSwitchState = digitalRead(pin_switch);
 
    if ( newSwitchState != oldSwitchState ){
       // has the button switch been closed?
       if ( newSwitchState == HIGH ){
           if ( LEDstatus == LOW ){ 
             digitalWrite(pin_LED, HIGH);  
             LEDstatus = HIGH; }
           else{ 
             digitalWrite(pin_LED, LOW); 
             LEDstatus = LOW;  }
       }
       oldSwitchState = newSwitchState;
    }   
}

Giải thích code:
Chúng ta sẽ có các bit oldSwitchState, newSwitchState, LEDstatus để có thể kiểm soát được chương trình.
- Đầu tiên sẽ trạng thái nút nhấn hiện tại sẽ được lưu vào bit newSwitchState
- Tiếp đến sẽ kiểm tra xem trạng thái hiện tại có khác với trạng thái trước đó không? Nếu khác thì sẽ thực hiện các lệnh bên trong.
   + Ví dụ, nếu có nhấn, pin_switch sẽ lên 1, newSwitchState = 1, sẽ khác với giá trị 0 của oldSwitchState, đoạn code bên trong sẽ được thực thi, nếu giá trị mới của nút nhấn = 1 và trạng thái của LED đang OFF thì sẽ ra lệnh cho LED ON và lưu giá trị LEDstatus = 1, ngược lại nếu trạng thái LED đang ON thì sẽ ra lệnh cho LED OFF và lưu giá trị LEDstatus = 1. Lưu ý nếu giá trị mới của nút nhấn bằng 0 sẽ không thực hiện gì cả.

Các bạn hãy xem video dưới đây để dễ hiểu hơn nhé.


1 nhận xét:

Adbox