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 verGörev
OrtaServoyu, 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: 45biç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
}
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