pulseIn()

Mô tả

Đọc một xung tín hiệu digital (HIGH/LOW) và trả về chu kì của xung tín hiệu, tức là thời gian tín hiệu chuyển từ mức HIGH xuống LOW hoặc ngược lại (LOW -> HIGH). Một số cảm biến như cảm biến màu sắc như TCS3200D hay cảm biến siêu âm dòng HC-SRxx phải giao tiếp qua xung tín hiệu nên ta phải kết hợp giữa 2 hàm digitalWrite() để xuất tín hiệu và pulseIn() để đọc tín hiệu.

Cú pháp

pulseIn(pin, value);
pulseIn(pin, value, timeout);

Trong đó:

pin là chân được chọn để đọc xung. pin có kiểu dữ liệu là int.

Nếu đặt value là HIGH, hàm pulseIn() sẽ đợi đến khi tín hiệu đạt mức HIGH, khởi động bộ đếm thời gian. Khi tín hiệu nhảy xuống LOW, bộ đếm thời gian dừng lại. pulseIn() sẽ trả về thời gian tín hiệu nhảy từ mức HIGH xuống LOW này. Nếu đặt value là LOW, hàm pulseIn() sẽ làm ngược lại, đó là đo thời gian tín hiệu nhảy từ mức LOW lên HIGH. value có kiểu dữ liệu là int.

Nếu tín hiệu luôn ở một mức HIGH/LOW cố định thì sau khoảng thời gian timeout, hàm pulseIn() sẽ dừng bộ đếm thời gian và trả về giá trị 0. timeout được tính bằng đơn vị micro giây. Giá trị mặc định của timeout là 60.10tương ứng với 1 phút. Giá trị tối đa là 180.10tương ứng với 3 phút. timeout có kiểu dữ liệu là unsigned long.

Trả về

Một số nguyên kiểu unsigned long, đơn vị là micro giây. pulseIn() trả về 0 nếu thời gian nhảy trạng thái HIGH/LOW vượt quá timeout

Ví dụ

int pin = 7;
unsigned long duration;

void setup() {
    Serial.begin(9600);
    pinMode(pin, INPUT);
}

void loop() {
  duration = pulseIn(pin, HIGH);   
  //Hãy nối chân 7 của Arduino vào đường tín hiệu
  //bạn muốn đọc xung
  
  Serial.println(duration);
}

 

Reference Tags: 
lên
5 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Bạn có biết Arduino là gì không? Tìm hiểu thêm...

"Tử thuở còn cắp sách tới trường, có lẽ bạn cũng như tôi, rất thích chơi xe điện tử - nhất là xe điều khiển từ xa! Hồi ấy, tôi rất hay đòi ba mẹ mua một chiếc mỗi khi họ đi công tác xa. Và cứ như một thói quen, chơi được 1 tuần tôi lại "tháo banh" chiếc xe của mình và xem các mạch điện tử. Nói là xem vậy thôi, chứ chủ yếu là tôi lấy mô tơ ra làm quạt chơi (hehe). Lên lớp 11, thì tôi biết đến mạch Arduino từ lời giới thiệu của anh trai, và từ đây, câu chuyện về xe điều khiển của tôi còn dừng lại ở cái quạt mô - tơ nữa....!"

lên
52 thành viên đã đánh giá bài viết này hữu ích.

Bài 4: Đọc điện áp điều chỉnh bởi biến trở

Bài ví dụ này sẽ giới thiệu cho các bạn cách đọc giá trị của một biến trở. Biến trở chỉ đơn giản chỉ là một điện trở có thể thay đổi được trị số. Mạch Arduino không đọc điện trở này mà đọc điện áp do biến trở tạo ra. Một vài IC cũng sử dụng mức điện áp để biểu thị thông tin tương tự như biến trở.

lên
34 thành viên đã đánh giá bài viết này hữu ích.