Arduino Động cơ servo được điều khiển bằng chiết áp

Trong Arduino - Biến trở kích hoạt động cơ servo, chúng ta đã học cách biến trở kích hoạt động cơ servo. Trong bài hướng dẫn này, chúng ta sẽ học cách quay động cơ servo theo giá trị đầu ra của biến trở.

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×động cơ servo
1×Chiết áp
1×Alternatively, 10k Ohm Trimmer Potentiometer
1×Mô-đun chiết áp có núm xoay
1×(Hoặc) Potentiometer Kit
1×(Hoặc) Potentiometer Module with Knob
1×breadboard
1×dây jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về động cơ servo và biến trở

Nếu bạn chưa biết về động cơ servo và điện trở biến thiên (bố trí chân, cách hoạt động, cách lập trình ...), hãy tìm hiểu về chúng trong các bài hướng dẫn sau:

Sơ đồ đấu dây

sơ đồ đấu nối động cơ servo Arduino và điện trở biến thiên

This image is created using Fritzing. Click to enlarge image

Cách Lập Trình

  • đọc giá trị của biến trở (giá trị từ 0 đến 1023)
int analogValue = analogRead(A0);
  • Chỉnh nó về góc (giá trị từ 0 đến 180 độ)
int angle = map(analogValue, 0, 1023, 0, 180);
  • Thiết lập vị trí của servo theo góc
myServo.write(angle);

Mã Arduino

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-servo-motor-controlled-by-potentiometer */ #include <Servo.h> Servo myServo; // create servo object to control a servo void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); myServo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { // reads the value of the potentiometer (value between 0 and 1023) int analogValue = analogRead(A0); // scales it to use it with the servo (value between 0 and 180) int angle = map(analogValue, 0, 1023, 0, 180); // sets the servo position according to the scaled value myServo.write(angle); // print out the value Serial.print("Analog: "); Serial.print(analogValue); Serial.print(", Angle: "); Serial.println(angle); delay(100); }

Hướng dẫn từng bước

  • Kết nối Arduino với PC bằng cáp USB
  • Mở Arduino IDE, chọn board và cổng đúng
  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấp nút Tải lên trên Arduino IDE để nạp mã vào Arduino
nạp mã bằng Arduino ide
  • Mở Trình giám sát nối tiếp
  • Xoay biến trở
  • Xem sự quay của động cơ servo
  • Xem kết quả trên Trình giám sát nối tiếp
COM6
Send
Analog: 0, Angle: 0 Analog: 85, Angle: 14 Analog: 201, Angle: 35 Analog: 286, Angle: 50 Analog: 370, Angle: 65 Analog: 444, Angle: 78 Analog: 521, Angle: 91 Analog: 608, Angle: 106 Analog: 690, Angle: 121 Analog: 793, Angle: 139 Analog: 907, Angle: 159 Analog: 1023, Angle: 180 Analog: 1023, Angle: 180
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Giải thích mã nguồn

Đọc lời giải thích từng dòng trong các dòng chú thích của mã nguồn!

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.