Wednesday, September 17, 2014

Bink Without Delay

Blink Without Delay

Thỉnh thoảng chúng ta cần làm 2 thứ một lúc nhưng có thể làm bằng cách nào? Ví dụ này giúp cho chúng ta vừa làm LED nháy vừa đọc tín hiệu từ nút nhấn hoặc tín hiệu khác. Trong trường hợp này chúng ta không thể sử dụng hàm delay(), nếu chúng ta sử dụng hàm này sẽ dẫn đến kết quả như sau: chương trình sẽ dừng khi nhấn nút nhấn nếu nó xảy ra khi sẻ dụng hàm delay(). Bản code dưới đay sẽ chỉ ra cách làm LED nháy mà không sử dụng hàm delay(). 
Yêu cầu phần cứng
  • Mạch Arduino Board
  • LED

Kết nối mạch

Trong mạch này chân dương của LED sẽ đi vào chân số 13, chân âm của LED sẽ đi vào chân GND. Kết nối Arduino với máy tính và nhập chương trình bên dưới vào
Sơ đồ

hình ảnh sử dụng Fritzing. Các ví dụ khác, xem Fritzing project page

Code

Trong đoạn code này sử dụng hàm millis() để làm LED nháy
/* Blink without Delay
 
 Bật và tắt LED bằng khi kết nối với chân Digital sử dụng hàm millis()
 
 Lắp mạch:
 * LED kết nối giữa chân 13 và chân Gnd.
*/


// Hằng số là không đổi, vì vậy ở đây sử dụng hằng số để thiết lập
const int ledPin =  13;      // chân của LED

int ledState = LOW;             // ledState trạng thái của LED
long previousMillis = 0;        // sẽ lưu lại khi thời gian được cập nhật

long interval = 1000;           // Thời gian LED nháy (mini giây)

void setup() {
  // Thiết lập chân xuất tín hiệu
  pinMode(ledPin, OUTPUT);    
}

void loop()
{
  unsigned long currentMillis = millis();

  if(currentMillis - previousMillis > interval) {
    // Lưu thời gian mà LED  nháy
    previousMillis = currentMillis;  

    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;

    // thiết lập LED với các giá trị khác nhau của trạng thái LED
    digitalWrite(ledPin, ledState);
  }
}

0 comments:

Post a Comment