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);
}
}
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