Lập trình Arduino không cần viết code - Phần 8: Đo khoảng cách với vật cản bằng cảm biến siêu âm

Đây là phần 8 của chuỗi bài viết "Lập trình Arduino không cần viết code"

- Xem lại phần 7 tại đây

Ở phần trước mình đã hướng dẫn các bạn cách làm việc với cảm biến đưa ra tín hiệu là digital và analog (Cụ thể ở phần đó là cảm biến mưa). Và ở phần này là 1 con cảm biến thuộc một loại khác. Cảm biến này có tên là cảm biến siêu âm.

Cảm biến siêu âm

Cảm biến siêu âm có chức năng là giúp chúng ta xác định được khoảng cách tới vật cản trước mặt nó. Tuy nhiên nó không giúp xác định trực tiếp mà ta phải lập trình cho nó. Nó gồm 4 chân và 2 con mắt(Mắt trig và mắt echo):

Vcc 5V
GND GND
Trig (Phát sóng siêu âm) Dpin
Echo (Thu sóng siêu âm) Dpin

 

Nguyên lí hoạt động như sau: Khi ta cấp cho chân trig một tín hiệu điện ngắn, mắt trig sẽ phát ra 1 luồng sóng siêu âm, trong lúc sóng này di chuyển thì ta sẽ đếm thời gian nó di chuyển. Khi sóng siêu âm chạm vật cản và dội ngược lại sẽ được mắt echo thu lại và làm cho chân echo báo về tín hiệu high, đến lúc này ta sẽ dừng đếm thời gian. Như vậy sóng siêu âm sẽ đi 2 lần khoảng cách đến vật cản. Và ta sẽ nhân thời gian với vận tốc sóng chia 2. Nhưng làm thế nào mà ta đếm được thời gian, ta sẽ đếm thời gian chân echo đợi cho tới khi nhận được tín hiệu HIGH.

Thực hành

Trước khi thực hànhmình xin nhắc là trong bài này có sử dụng kiến thức bài trước (Serial) nên để hiểu và làm đúng thì cần đọc bài trước.

Chuẩn bị

Lặp mạch như sơ đồ.

Lập trình với mBlock

Chọn Arduino Mode, mở khối Serial và lập trình theo sơ đồ sau:

Ngắt kết nối cổng COM của arduino nếu đang kết nối .Vì mBlock bị 1 lỗi trong Serial, nên cần chỉnh code một tí, chọn Edit with Arduino IDE:

Bỏ dòng như trong hình (Dòng MeSerial se):

Up code, tắt arduino IDE, bật lại cổng COM của arduino trên mBlock và hưởng thụ.

Lập trình với Arduino IDE

Code đây nè

#define trig 10
#define echo 11
void setup()
{
  pinMode(trig,OUTPUT);
  pinMode(echo,INPUT);
  Serial.begin(9600);
}
void loop()
{
  Serial.print(objectDistance_cm());
  Serial.println("cm");
  delay(2000); 
}
int objectDistance_cm()
{
  unsigned long thoigian;
  int distance;
  
  /*Phat xung tu chan Trig*/
  digitalWrite(trig,0);
  delayMicroseconds(2);
  digitalWrite(trig,1);
  delayMicroseconds(5);
  digitalWrite(trig,0);
  
  /*Tinh toan*/
  thoigian = pulseIn(echo,1);
  distance = int(thoigian/2/29.412);
  return distance;
}

Kết luận

Như vậy là chúng ta vừa tìm hiểu xong cách xác định khoảng cách với vật cản bằng cảm biến siêu âm. Mình vọng rằng bài viết này nói riêng và chuỗi bài nói chung sẽ mang lại nhiều kiến thức mới và giúp ích cho các bạn newbie. Xin cảm ơn đã theo dõi.

lên
25 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Lập trình Arduino không cần viết code - Phần 13: Tạo hàm điều khiển bộ phận di chuyển sử dụng L298

Đây là phần 13 của chuỗi bài viết "Lập trình Arduino không cần viết code"

- Xem lại phần 12 tại đây

Ở phần trước, mình đã hướng dẫn các bạn tạo một hàm giúp điều khiển motor dễ dàng hơn, và mục đích của phần đó chính là tạo hàm của phần này. Hôm nay mình sẽ hướng dẫn các bạn tạo hàm điều khiển bộ phận di chuyển sử dụng module L298. Với hàm này bạn có thể ứng dụng nó làm các dự án xe hay robot di chuyển bằng bánh xe sử dụng module L298 để điều khiển.

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

Lập trình Arduino không cần viết code - Phần 3: Chuyển đổi công nghệ, công nghệ khác tốt hơn

Đây là phần 3 của chuỗi bài "Lập trình Arduino không cần viết code".

Xem lại phần 2 tại đây.

Sau vài lần sử dụng phần mềm miniBloq, mình cảm thấy nó còn khá nhiều điểm yếu như có ít đối tượng lệnh nên còn một vài lệnh phải gõ tay hay câu lệnh không thống nhất với Arduino IDE (như trong arduino, lệnh digitalWrite() còn trong miniBloq thì là DigitalWrite),.. Nên mình đã lao đầu lên mạng tìm xem còn phần mềm nào khác tương tự không và mình đã tìm thấy một phần mềm hay hơn nhiều. Đó là mBlock. Và đã đến lúc chúng ta chuyển đổi công nghệ.

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