Menu
CoddyTech

Góc servo từ Serial

Thuộc phần Đầu ra trong hành trình Arduino của Coddy. Bài học 23 trên 24.

Cánh tay cũng có thể nhận lệnh từ màn hình Serial. Nhập một góc rồi nhấn Enter; Serial.parseInt() đọc số đó:

if (Serial.available() > 0) {
  int angle = Serial.parseInt();
  Serial.read();  // ký tự xuống dòng sau số
  // dùng angle
}

Ký tự xuống dòng sau số vẫn còn chờ. Ở lần chạy tiếp theo của loop(), parseInt() sẽ không tìm thấy chữ số nào, chờ một giây rồi trả về 0. Bỏ qua số 0 đó vẫn ổn với tốc độ nhấp nháy, nhưng 0 là một góc thực sự. Vì vậy, hãy đọc bỏ ký tự xuống dòng bằng một lệnh Serial.read() ngay sau số.

Người dùng cũng có thể nhập một số không phải là góc. arm.write() đọc bất kỳ số nào từ 544 trở lên như độ dài xung tính bằng micro giây, vì vậy 1000 sẽ đưa cánh tay đến gần 45 độ. Trước tiên, constrain() giữ góc trong khoảng từ 0 đến 180:

angle = constrain(angle, 0, 180);  // truyền biến (variable) vào đó, không phải parseInt()
challenge icon

Thử thách

Trung bình

Di chuyển động cơ servo đến góc bạn nhập trong cửa sổ Serial:

  • khi nhận được một số, đọc số đó bằng Serial.parseInt(), sau đó đọc bỏ ký tự xuống dòng (0 cũng là một góc)
  • giữ góc trong khoảng từ 0 đến 180 bằng constrain()
  • di chuyển cánh tay servo và in ra góc theo dạng Angle: 45

Nhấn Chạy, gửi 45 từ cửa sổ Serial, rồi nhấn Kiểm tra.

Tự làm thử

#include <Servo.h>

Servo arm;

void setup() {
  arm.attach(9);
  arm.write(90);
  Serial.begin(9600);
}

void loop() {
  // Khi nhận được một số: đọc số đó, rồi đọc bỏ ký tự xuống dòng,
  // giới hạn số đó từ 0 đến 180, xoay cánh tay và in số đó ra
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Đầu ra

Tự luyện tập: Playground Arduino