Thư viện hẹn giờ Arduino để trì hoãn

Thu Vien Hen Gio Arduino De Tri Hoan



Bộ đếm thời gian là một trong những thành phần chính của Arduino để xử lý các tác vụ nhạy cảm với thời gian. Bộ hẹn giờ của Arduino thường sử dụng hàm delay() để cung cấp thời gian trì hoãn hoặc tạm dừng thực thi trong các khoảng thời gian ngắn. Tuy nhiên, cần có một thư viện đặc biệt cho các chức năng trì hoãn để thực hiện đa nhiệm.

Hướng dẫn này sẽ bao gồm các thư viện hẹn giờ Arduino khác nhau để trì hoãn với các mô tả ngắn gọn. Trước đó, hãy hiểu giới hạn của hàm Arduino delay().







Hạn chế của độ trễ()

Không thể sử dụng hàm delay() nếu bạn muốn thực hiện đồng thời các tác vụ khác nhau vì đây là hàm chặn. Điều đó có nghĩa là bất cứ khi nào hàm delay() được sử dụng để tạm dừng thực thi một tác vụ, nó sẽ không cho phép bất kỳ hàm nào khác thực thi trong thời gian đó. Do đó, khi ai đó muốn dừng một chương trình trong khi chạy các chương trình khác, không thể sử dụng hàm delay().



Sau đó làm gì?



Thư viện hẹn giờ Arduino để trì hoãn các cuộc gọi chức năng

Để giải quyết vấn đề này, bạn nên sử dụng các thư viện đặc biệt được thiết kế để thực hiện độ trễ. Các thư viện này cho phép bạn tạm dừng một số chức năng trong chương trình một thời gian và chạy các chức năng khác trong thời gian chờ đợi. Các thư viện này là thư viện hẹn giờ không chặn đa nhiệm. Chúng có thể được sử dụng để gọi các chức năng khi được yêu cầu.





Cách đưa thư viện hẹn giờ Arduino vào mã Arduino

Để bao gồm thư viện hẹn giờ, trước tiên chúng ta phải thêm tệp zip bằng cách truy cập Bao gồm thư viện phần trong Arduino IDE. Để biết mô tả chi tiết về việc thêm các thư viện Arduino, bạn có thể đọc bài viết trên cách cài đặt Thư viện trong Arduino IDE .

Bước 1

Đầu tiên, bạn sẽ phải tải xuống thư viện hẹn giờ Arduino.



Bước 2

Sau khi tải xuống thư viện hẹn giờ, hãy mở Arduino IDE và đi tới Phác thảo rồi Bao gồm Thư viện, sau đó nhấp vào Thêm Thư viện ZIP.


Arduino sẽ hiển thị 'Thư viện đã được cài đặt' ở đầu ra.

Bước 3

Sau khi bạn đã thêm thư viện ZIP vào Arduino IDE, nó sẽ xuất hiện trong danh sách thả xuống của tùy chọn Bao gồm Thư viện trong Arduino IDE. Từ đây bao gồm hẹn giờ thư viện.


Khi bạn bao gồm 'Hẹn giờ' thư viện, chỉ thị tiền xử lý sẽ xuất hiện trên bản phác thảo. Nếu không, bạn có thể làm theo bước 4 để thêm thư viện theo cách thủ công.

# bao gồm < Hẹn giờ.h >

Bước 4

Để bao gồm Thư viện hẹn giờ Arduino trong mã Arduino, bạn cần sử dụng #bao gồm chỉ thị cùng với (.h) tên thư viện bộ đếm thời gian mở rộng và sau đó tạo bộ hẹn giờ như hình bên dưới.

#include
hẹn giờ tự động = timer_create_default ( ) ;


Sau khi tạo bộ đếm thời gian, bạn cần tạo một chức năng để gọi bộ đếm thời gian đó. Bạn có thể cần gọi bộ hẹn giờ tại một thời điểm nhất định, sau một khoảng thời gian trễ ngắn hoặc sau một khoảng thời gian. Ví dụ để gọi bộ hẹn giờ trong các điều kiện như vậy được đưa ra dưới đây.

Trong trường hợp bạn muốn có một sự chậm trễ ngắn

hẹn giờ.in ( trì hoãn, function_to_call ) ;
hẹn giờ.in ( trì hoãn, function_to_call, đối số ) ; // hoặc với một đối số tùy chọn function_to_call


Trong trường hợp này, chúng ta có thể sử dụng hẹn giờ.in() chức năng giới thiệu độ trễ trước khi gọi một chức năng cụ thể. Tham số độ trễ biểu thị thời gian tính bằng mili giây mà chúng tôi muốn đợi trước khi thực thi mã.

Sau khoảng thời gian trễ được chỉ định, function_to_call sẽ được sử dụng. Một đối số cũng có thể được xác định để chuyển đến hàm tại thời điểm gọi.

Trong trường hợp bạn muốn gọi bộ hẹn giờ vào một thời điểm cụ thể

Chức năng này thiết lập một bộ đếm thời gian để thực hiện một chức năng cụ thể tại một thời điểm cụ thể. Tham số time chỉ định thời gian mà hàm sẽ được gọi. Nó có thể là dấu thời gian cụ thể hoặc giá trị độ trễ tính bằng mili giây. Các function_to_call là tham số của chức năng sẽ được thực hiện sau khi hết thời gian hẹn giờ.

hẹn giờ.at ( thời gian , function_to_call ) ;
hẹn giờ.at ( thời gian , hàm_gọi_gọi, đối số ) ; // với lập luận


timer.at(thời gian, function_to_call, đối số) hàm có thể truyền đối số cho hàm được gọi. Tham số đối số sẽ là giá trị được truyền trong hàm.

Trong trường hợp bạn muốn hẹn giờ gọi sau một khoảng thời gian

Trong trường hợp này, bạn có thể sử dụng hàm timer.every() để gọi hàm liên tục sau một khoảng thời gian cụ thể. Tham số khoảng thời gian hiển thị thời gian tính bằng mili giây giữa các khoảng thời gian thực thi.

Chỉ định khoảng thời gian mong muốn và function_to_call sẽ được sử dụng lặp đi lặp lại sau khoảng thời gian đó. Giống như các trường hợp trước, bạn có thể đưa vào một đối số tùy chọn để truyền vào hàm khi nó được gọi.

hẹn giờ.mọi ( khoảng thời gian, function_to_call ) ;
hẹn giờ.mọi ( khoảng thời gian, function_to_call, đối số ) ; // Viết khoảng thời gian của bạn ở đây


Bạn có thể tìm hiểu thêm chi tiết về phương pháp sử dụng thư viện hẹn giờ này để trì hoãn các lệnh gọi hàm thông qua liên kết Thư viện hẹn giờ Arduino cho các chức năng trì hoãn .

Một số thư viện khác cho độ trễ trong Arduino

Liên kết được cung cấp bên dưới sẽ đưa bạn đến các thư viện hẹn giờ của Arduino, nơi bạn có thể cài đặt các thư viện hẹn giờ để trì hoãn các cuộc gọi chức năng.

Thư viện hẹn giờ của Michael Contreras

Ngoài ra còn có một tác giả đã cung cấp thư viện hẹn giờ Arduino không chặn do chính anh ấy tạo ra để trì hoãn các cuộc gọi chức năng. Anh ấy đã sử dụng các chức năng sẵn có của Arduino như millis() và micros() để thực hiện các chức năng trì hoãn mà không bị chặn. Một liên kết đến thư viện của anh ấy được đưa ra dưới đây:

michaeluray Thư viện hẹn giờ Arduino

Phần kết luận

Mặc dù hàm delay() đã có sẵn trong Arduino nhưng nó không thể được sử dụng để thực hiện nhiều tác vụ cùng một lúc. Để thực hiện nhiều tác vụ cùng một lúc, các thư viện hẹn giờ không chặn đã được tạo bởi cộng đồng Arduino có thể được sử dụng khi cần thiết.