Đôi khi ta cần chương trình chạy nhiều hoạt động cùng lúc, nếu dùng hàm delay( ) sẽ khiến chương trình bị ngắt trong giai đoạn hàm delay( ) hoạt động.
Do vậy ta cần một hàm đếm thời gian mà không sử dụng delay( ). Như vậy ta có thể chạy nhiều hoạt động đồng thời.
Trong bài này, ta dùng một hàm đếm thời gian đơn giản.
Để tận dụng tài nguyên có sẵn, ta không dùng LED gắn ngoài mà dùng LED có sẵn tại chân 13. Nếu không, ta có thể nối đèn LED giống như bài trước và đổi chân 13 thành chân khác trong chương trình.
Điểm quan trọng nhất là sử dụng hàm millis( )
/* Blink without Delay Bật tắt LED mà không dùng hàm delay( ) This example code is in the public domain. // Khai báo hằng số, gán chân LED có sẵn : const int ledPin = LED_BUILTIN; // Biến số nguyên chỉ trạng thái int ledState = LOW; // Nên dùng biến "unsigned long" cho các biến lưu giữ thời gian unsigned long previousMillis = 0; // hằng số chỉ khoảng thời gian nháy đèn: const long interval = 1000; void setup() { // chân LED là lối ra: pinMode(ledPin, OUTPUT); } void loop() { // đọc giá trị thời gian bằng hàm có sẵn millis() unsigned long currentMillis = millis(); //nếu thời gian hiện giờ trừ thời điểm đã lưu trước đó //lớn hơn khoảng thời gian đặt sẵn if (currentMillis - previousMillis >= interval) { // lưu lại thời điểm này previousMillis = currentMillis; // thay đổi trạng thái đèn tắt thì bật lên và ngược lại: if (ledState == LOW) { ledState = HIGH; } else { ledState = LOW; } // bật đèn theo trạng thái ở trên: digitalWrite(ledPin, ledState); } }