Lập trình Arduino không cần viết code - Phần 12: Tạo hàm điều khiển motor

Đây là phần 12 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 11 tại đây

Ở phần 9 mình đã hướng dẫn cách điều khiển motor với module L298, đồng thời ở phần trước mình cũng đã hướng dẫn cách tạo một hàm riêng. Hôm nay mình sẽ hướng dẫn các bạn tạo hàm điều khiển motor cho module L298. Vào luôn!

Cách làm

Chúng ta sẽ tạo một hàm gồm 3 thông số thuộc kiểu số là: in1, in2 và action. Trong đó, in1 và in2 là 2 chân điều khiển motor nối với arduino, action là trạng thái motor gồm đứng yên (0), quay theo chiều thứ nhất (1), quay theo chiều thứ hai (2).

Thực hành

Chuẩn bị

  • Arduino mình dùng con Uno
  • Module điều khiển động cơ motor L298
  • 1 con motor hoặc 2 nếu muốn

Nối mạch như sau, Vs là chân 12V, senA, senB được nối chung với GND ở module thực nên khi nhìn module thiệt đừng hỏi sao không thấy nó:

Lập trình với mBlock

Trước tiên tạo một hàm mới gồm 3 thông số như hình

Lập trình cho hàm theo sơ đồ

Lập trình chính cho arduino 

mBlock bị lỗi ở pinMode nên cần chỉnh code một tí tẹo

Ở hàm setup, chỉnh in1 thành 7 và in2 thành 8, nếu muốn điều khiển thêm 1 motor nữa thì lập trình tương tự như trên, sau đó chỉnh lại in1, in2 và thêm 2 dòng pinMode nữa cho motor 2.

Ok, úp luôn đi.

Lập trình với Arduino

Phần cứng y như đúc, phần code thì thế này nè:

#define inA1 7
#define inA2 8
void setup()
{
  pinMode(inA1,OUTPUT);
  pinMode(inA2,OUTPUT);
}
void loop()
{
  motorMove(inA1,inA2,1);
  delay(3000);
  motorMove(inA1,inA2,0);
  delay(3000);
  motorMove(inA1,inA2,2);
  delay(3000);
}
void motorMove(int in1,int in2, byte action)
{
  switch(action)
  {
    case 0: //Dung
    digitalWrite(in1,0);
    digitalWrite(in2,0);
    break;
    case 1: //Chieu thu 1
    digitalWrite(in1,1);
    digitalWrite(in2,0);
    break;
    case 2: //Chieu thu 2
    digitalWrite(in1,0);
    digitalWrite(in2,1);
    break;
  }
}

Kết luận

Như vậy là ta vừa tìm hiểu xong cách tạo hàm điều khiển motor với module L298. Vậy lí do gì mà mình lại giới thiệu về hàm này thì các bạn sẽ biết ở phần sau. Xin cảm ơn đã theo dõi. Chúc các bạn thành công.

lên
9 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

Một dự án được truyền cảm hứng với "LED RGB chung cực dương"

Sau khi đọc xong bài viết "Làm thế nào để điều khiển được LED RGB", mình cũng muốn làm thử. Tuy nhiên khi đặt mua thì lại nhận được loại LED RGB có cực dương chung. Vậy làm sao áp dụng được?

 

lên
33 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ả

Lập trình Arduino không cần viết code - Phần 15: Ứng dụng Timer lập trình 2 led blink song song

Đây là phần 15 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 14 tại đây

Ở phần trước, mình đã hướng dẫn các bạn sử dụng timer trong Arduino và mBlock. Và hôm nay mình sẽ đưa ra một ví dụ ứng dụng timer. Ví dụ đó chính là làm cho 2 led blink song song nhau theo 2 chu kì thời gian khác nhau, đây cũng chính là ứng dụng chính của timer.

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

Chạy hàm song song với delay

Xin chào các bạn! Trong cuộc sống, đôi khi chúng ta đang làm một việc gì đó và sẽ có lúc chúng ta phải đợi một khoảng thời gian rồi mới làm tiếp công việc ấy, và khi ấy ta sẽ tận dụng khoảng thời gian ấy để làm một việc khác. Vậy trong arduino ta có thể làm tương tự không, trong khi ta cho chương trình delay thì ta lại cho nó thực hiện một việc gì đó. Đáp án là được, bài viết này sẽ chia sẻ thủ thuật khá hay này.

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