Menu
CoddyTech

Điều chỉnh tốc độ nhấp nháy qua cổng nối tiếp

Thuộc phần Đầu vào trong hành trình Arduino của Coddy. Bài học 17 trên 22.

Nhập 250, bo mạch nhận ba ký tự '2', '5' và '0', rồi đến ký tự xuống dòng. Serial.parseInt() đọc các chữ số và chuyển chúng thành số 250, dừng lại ở ký tự đầu tiên không phải chữ số.

Có một điểm cần lưu ý: nếu không có chữ số nào đến, parseInt() sẽ chờ tối đa 1 giây, rồi trả về 0. Điều này xảy ra sau mỗi lần bạn nhập một số: ký tự xuống dòng kết thúc số vẫn đang chờ, nên Serial.available() lại lớn hơn 0, còn parseInt() không tìm thấy chữ số nào, chờ 1 giây rồi trả về 0.

Vì vậy, hãy xem giá trị 0 là “không có gì hữu ích” và giữ nguyên giá trị cũ:

if (Serial.available() > 0) {
  int n = Serial.parseInt();
  if (n > 0) {
    wait = n;
  }
}

Bạn sẽ thấy đèn LED tạm dừng một giây sau mỗi lần bạn nhập một số: đó là lúc parseInt() chờ.

challenge icon

Thử thách

Trung bình

Đèn LED ở chân 13 nhấp nháy, sáng trong wait ms và tắt trong wait ms, với giá trị ban đầu của wait là 500. Dùng màn hình Serial để thay đổi tốc độ:

  • khi có ký tự đang chờ, đọc một số bằng Serial.parseInt()
  • nếu số đó lớn hơn 0, lưu số đó vào wait

Nhấn Chạy, gửi 100 từ màn hình Serial, rồi nhấn Kiểm tra.

Tự làm thử

const int ledPin = 13;

int wait = 500;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // Khi có ký tự đang chờ, đọc một số vào wait (nếu số đó lớn hơn 0)
  digitalWrite(ledPin, HIGH);
  delay(wait);
  digitalWrite(ledPin, LOW);
  delay(wait);
}
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 vào

Tự luyện tập: Playground Arduino