Menu
CoddyTech

Seri Porttan Servo Açısı

Coddy'nin Arduino Journey'sinin Çıkışlar bölümünün bir parçası. Ders 23 / 24.

Kol ayrıca Serial monitöründen de komut alabilir. Bir açı yazıp Enter'a bas; Serial.parseInt() sayıyı okur:

if (Serial.available() > 0) {
  int angle = Serial.parseInt();
  Serial.read();  // sayıdan sonraki yeni satır karakteri
  // angle değişkenini kullan
}

Sayıdan sonraki satır sonu beklemede kalır. loop() işlevinin bir sonraki çalışmasında parseInt() hiçbir rakam bulamaz, bir saniye bekler ve 0 döndürür. Bu 0'ı yok saymak yanıp sönme hızı için işe yarıyordu, ancak 0 geçerli bir açıdır. Bu yüzden sayıdan hemen sonra tek bir Serial.read() ile satır sonunu okuyup kaldır.

Birisi açı olmayan bir sayı da yazabilir. arm.write(), 544 ve üzerindeki tüm sayıları mikrosaniye cinsinden darbe uzunluğu olarak okur; dolayısıyla 1000, kolu yaklaşık 45 dereceye getirir. constrain() önce açıyı 0 ile 180 arasında tutar:

angle = constrain(angle, 0, 180);  // Ona parseInt() değil, değişkeni ver
challenge icon

Görev

Orta

Servoyu, Seri monitöründe yazılan açıya hareket ettir:

  • bir sayı geldiğinde, Serial.parseInt() ile oku, ardından yeni satır karakterini oku (0 da bir açıdır)
  • constrain() ile 0 ile 180 arasında tut
  • kolu hareket ettir ve açıyı Angle: 45 biçiminde yazdır

Run'a bas, Seri monitöründen 45 gönder, ardından Check'e bas.

Kendin dene

#include <Servo.h>

Servo arm;

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

void loop() {
  // bir sayı geldiğinde: onu oku, satır sonu karakterini de okuyup geç,
  // onu 0 ile 180 arasında tut, kolu hareket ettir ve sayıyı yazdır
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Çıkışlar bölümündeki tüm dersler

Kendi başına pratik yap: Arduino playground