Thứ Ba, 12 tháng 6, 2018

Published tháng 6 12, 2018 by Nặc danh with 0 comment

Thực hiện tác vụ song song trên Arduino bằng hàm millis()


Thực hiện nhiều tác vụ song song bằng hàm thời gian trong Arduino cũng khá đơn giản bằng lệnh milis() , hàm này có nghĩa là đếm thời gian kể từ lúc bắt đầu khởi chạy chương trình . Áp dụng vào bài này ta sẽ lấy thời gian đếm được tại thời điểm hiện tại trừ đi thời gian trước đó ( mặc định ta cho là 0) sau đó sẽ lấy thời gian hiện tại gán làm thời gian trước đó ( 0 cộng thêm khoảng thời gian) , cứ lặp lại như thế khi nó > thời gian chu kỳ của tác vụ . dùng if để các lệnh có ngang quyền thực thi với nhau. Dưới đây là đoạn code tham khảo 4 con led co chu kỳ sáng tắt khác nhau:
byte led1 = 10;
byte led2 = 11;
byte led3 = 12;
byte led4 = 13;
unsigned long time1 = 0;
unsigned long time2 = 0;
unsigned long time3 = 0;
unsigned long time4 = 0;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
}
void loop()
{
if ( (unsigned long) (millis() - time1) > 350 )
{
if ( digitalRead(led1) == LOW )
{
digitalWrite(led1, HIGH);
} else {
digitalWrite(led1, LOW );
}
time1 = millis();
}
if ( (unsigned long) (millis() - time2) > 500 )
{
if ( digitalRead(led2) == LOW )
{
digitalWrite(led2, HIGH);
} else {
digitalWrite(led2, LOW );
}
time2 = millis();
}
if ( (unsigned long) (millis() - time2) > 600 )
{
if ( digitalRead(led3) == LOW )
{
digitalWrite(led3, HIGH);
} else {
digitalWrite(led3, LOW );
}
time3 = millis();
}
if ( (unsigned long) (millis() - time4) > 1000 )
{
if ( digitalRead(led4) == LOW )
{
digitalWrite(led4, HIGH);
} else {
digitalWrite(led4, LOW );
}
time4 = millis();
}
}
Ngoài ra mình còn sưu tầm được đoạn code về 8 led viết cũng rất chi tiết : Tải về
      edit

0 nhận xét:

Đăng nhận xét