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()Wyzwanie
ŚredniPrzesuń 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ę
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Wyjścia
5Ruch
Porusz ramieniem serwomechanizmuWychyl serwomechanizmSerwomechanizm i pokrętłoKąt serwomechanizmu z portu szeregowegoWskaźnik świetlny serwomechanizmuPoćwicz samodzielnie: Edytor online Arduino