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é.
Mình bán đèn led giá sỉ anh em có nhu cầu liên hệ mình nhé . cám ơn AD duyệt cho mình
Trả lờiXóa