#include <Servo.h> //Biblioteka odpowiedzialna za serwa
Servo serwomechanizm; //Tworzymy obiekt, dzięki któremu możemy odwołać się do serwa
int pozycja = 0; //Aktualna pozycja serwa 0-180
int zmiana = 6; //Co ile ma się zmieniać pozycja serwa?
void setup()
{
serwomechanizm.attach(9); //Serwomechanizm podłączony do pinu 9
}
void loop()
{
if (pozycja < 180) { //Jeśli pozycja mieści się w zakresie
serwomechanizm.write(pozycja); //Wykonaj ruch
} else { //Jeśli nie, to powrót na początek
pozycja = 0;
}
pozycja = pozycja + zmiana; //Zwiększenie aktualnej pozycji serwa
delay(200); //Opóźnienie dla lepszego efektu
}
Witam, jest to mój pierwszy post na forum oraz pierwszy tydzień zabawy z Arduino, dlatego z góry dziękuję za pomoc i komentarze, nawet jeśli problem jest banalny.
Buduję model, w którym jednym z elementów jest rozdzielacz hydrauliczny z 3 serwami. Zadaniem serw jest pełne otwarcie zaworu oraz odczekanie zadanego czasu. Po jego upływie zawór zamyka się i znowu czekamy, aż upłynie zadany czas. Powyższy kod to kod z kursu do Aruduino (lekcja z zastosowaniem PWM). Kod działa i serwo pracuję non stop, otwiera i zamyka zawór, bez przerwy. Kombinowałem z funkcją delay jednak nic to nie dało, albo zrobiłem to źle. Czytałem, że musi zostać zastosowana tutaj jedna z funkcji arduino - millis(), ponieważ w trakcie pracy rozdzielacza inne elementy będą działać równolegle. Z tym również próbowałem, ale nie wyszło
Przejdźmy do sprawy: jak zmodyfikować kod, aby -
1) Istniała możliwość pracy innych elementów w czasie pracy rozdzielacza
2) Serwa robiły pauzę na określony czas po otwarciu i zamknięciu zaworu