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;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ề
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();
}
}
0 nhận xét:
Đăng nhận xét