Arduino Trình vẽ đồ thị nối tiếp

Trong bài hướng dẫn này, chúng ta sẽ học cách sử dụng Serial Plotter trên Arduino IDE và cách vẽ nhiều đồ thị.

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×(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ề Serial Plotter

Serial Plotter là một công cụ trong Arduino IDE. Arduino có thể đọc nhiệt độ, độ ẩm hoặc bất kỳ loại dữ liệu cảm biến nào và gửi chúng tới Serial Plotter. Serial Plotter nhận dữ liệu từ Arduino và hiển thị dữ liệu dưới dạng đồ thị sóng. Serial Plotter có thể hiển thị không chỉ dữ liệu cảm biến đơn mà còn nhiều dữ liệu cảm biến khác nhau trên cùng một đồ thị.

Dữ liệu được trao đổi giữa Serial Plotter và Arduino qua cáp USB, cáp này cũng được dùng để nạp chương trình lên Arduino. Do đó, để sử dụng Serial Plotter, chúng ta PHẢI kết nối Arduino với PC qua cáp này.

Serial Plotter bao gồm một hộp chọn để chọn tốc độ baud nối tiếp và một đồ thị:

  • Trục X biểu diễn thời gian. Trục X có 500 điểm. Khoảng thời gian giữa mỗi điểm là khoảng thời gian giữa hai lần gọi liên tiếp của hàm Serial.println(). Khoảng thời gian này thường bằng với thời gian của hàm loop().
  • Trục Y biểu diễn các giá trị nhận được từ Arduino. Trục Y tự động điều chỉnh theo sự tăng hoặc giảm của giá trị.

Nếu bạn muốn sử dụng Serial Plotter trên điện thoại thông minh của bạn, bạn có thể dùng Arduino - Trình vẽ đồ thị trên web thay thế.

Cách mở Serial Plotter

Trong Arduino IDE, nhấp vào biểu tượng Serial Plotter.

cách mở công cụ vẽ đồ thị nối tiếp

Vẽ một đường thẳng trên đồ thị

Để in một đồ thị duy nhất, chúng ta chỉ cần gửi dữ liệu và kết thúc bằng ký tự “\r\n”.

Cụ thể, chúng ta chỉ cần sử dụng hàm Serial.println().

Serial.println(variable);

※ Lưu ý:

Serial.println() tự động thêm vào sau dữ liệu các ký tự “\r\n”.

Mã ví dụ

Ví dụ này đọc giá trị từ một chân đầu vào analog và vẽ chúng trên Serial Plotter.

/* * 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-serial-plotter */ void setup() { Serial.begin(9600); } void loop() { int y1 = analogRead(A0); Serial.println(y1); delay(100); }

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

  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấp vào nút Tải lên trên Arduino IDE để tải mã lên Arduino
  • Mở Serial Plotter
  • Chọn tốc độ baud 9600
  • Xem đồ thị trên Serial Plotter
ví dụ về plotter nối tiếp: một đường duy nhất.

Vẽ nhiều đường trên đồ thị

Khi chúng ta muốn vẽ nhiều biến, chúng ta cần phân tách các biến với nhau bằng ký tự “\t” hoặc ký tự " ". Giá trị cuối cùng PHẢI được kết thúc bằng các ký tự “\r\n”.

Chi tiết:

  • Biến đầu tiên
Serial.print(variable_first);
  • Các biến ở giữa
Serial.print("\t"); // or Serial.print(" ") Serial.print(variable_nth);
  • Biến cuối cùng
Serial.print("\t"); // or Serial.print(" ") Serial.println(variable_last);

Mã ví dụ

Ví dụ này đọc giá trị từ 4 chân đầu vào analog và vẽ chúng lên Serial Plotter.

/* * 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-serial-plotter */ void setup() { Serial.begin(9600); } void loop() { int y1 = analogRead(A0); int y2 = analogRead(A1); int y3 = analogRead(A2); int y4 = analogRead(A3); Serial.print(y1); Serial.print(" "); // a space ' ' or tab '\t' character is printed between the two values. Serial.print(y2); Serial.print(" "); // a space ' ' or tab '\t' character is printed between the two values. Serial.print(y3); Serial.print(" "); // a space ' ' or tab '\t' character is printed between the two values. Serial.println(y4); // the last value is followed by a carriage return and a newline characters. delay(100); }

Nhiều đồ thị:

ví dụ về máy plotter nối tiếp với nhiều đường thẳng

Ví dụ về 3 dạng sóng sin

/* * 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-serial-plotter */ void setup() { Serial.begin(9600); } void loop() { for(int i = 0; i < 360; i += 5) { float y1 = 1 * sin(i * M_PI / 180); float y2 = 2 * sin((i + 90)* M_PI / 180); float y3 = 5 * sin((i + 180)* M_PI / 180); Serial.print(y1); Serial.print("\t"); // a space ' ' or tab '\t' character is printed between the two values. Serial.print(y2); Serial.print("\t"); // a space ' ' or tab '\t' character is printed between the two values. Serial.println(y3); // the last value is followed by a carriage return and a newline characters. delay(100); } }

Đồ thị nhiều sóng hình sin:

máy plotter nối tiếp sóng sin

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.