Menu
CoddyTech

Kąt serwomechanizmu z portu szeregowego

Część sekcji Wyjścia ścieżki Arduino w Coddy. Lekcja 23 z 24.

Ramię może również odbierać polecenia z monitora portu szeregowego. Wpisz kąt i naciśnij Enter; Serial.parseInt() odczytuje liczbę:

if (Serial.available() > 0) {
  int angle = Serial.parseInt();
  Serial.read();  // znak nowego wiersza po liczbie
  // użyj angle
}

Znak nowej linii po liczbie pozostaje w buforze. Przy następnym wywołaniu loop() funkcja parseInt() nie znajdzie żadnych cyfr, poczeka sekundę i zwróci 0. Zignorowanie tej wartości 0 sprawdziło się w przypadku prędkości migania, ale 0 jest prawidłowym kątem. Dlatego zaraz po odczytaniu liczby usuń znak nowej linii za pomocą jednego wywołania Serial.read().

Ktoś może też wpisać liczbę, która nie jest kątem. arm.write() interpretuje każdą liczbę od 544 wzwyż jako długość impulsu w mikrosekundach, więc wartość 1000 ustawiłaby ramię w pobliżu 45 stopni. Najpierw constrain() ogranicza kąt do zakresu od 0 do 180:

angle = constrain(angle, 0, 180);  // przekaż mu zmienną, a nie parseInt()
challenge icon

Wyzwanie

Średni

Przesuń serwomechanizm do kąta wpisanego w Monitorze szeregowym:

  • gdy nadejdzie liczba, odczytaj ją za pomocą Serial.parseInt(), a następnie odczytaj znak nowej linii (0 też jest kątem)
  • utrzymuj jej wartość w zakresie od 0 do 180 za pomocą constrain()
  • przesuń ramię i wypisz kąt w postaci Angle: 45

Naciśnij Run, wyślij 45 z Monitora szeregowego, a następnie naciśnij Check.

Spróbuj swoich sił

#include <Servo.h>

Servo arm;

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

void loop() {
  // gdy nadejdzie liczba: odczytaj ją i pomiń znak nowej linii,
  // ogranicz ją do zakresu od 0 do 180, przesuń ramię i wypisz tę liczbę
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wyjścia

Poćwicz samodzielnie: Edytor online Arduino