Zaczynam dopiero korzystać z Arduino i nie mogę znaleźć rozwiązania prostego problemu. Chcę aby po włączeniu Arduino ramię serwa wykonało ruch do końca w jedną stronę po czym wróciło do pozycji początkowej i na tym zakończyło program, tak jakby wykonało np. otwarcie i zamknięcie jakiejś klapki.
Próbowałem przerobić kod, który powoduje, że ramię idzie do końca, po czym szybciej wraca do pozycji początkowej i ponownie wykonuje to samo.
Po małej modyfikacji jedyne co udało mi się zrobić, że wykonuje ruch do końca ale już nie wraca do pozycji startowej.
Nie wiem jak zrobić, żeby wykonało cały pierwszy kod i po powrocie do pozycji startowej program się zakończył. Dodam, że chodzi o wykonanie programu po włączeniu zasilania Arduino z zewnętrznego programatora (póki co czekam na moduł zegara dlatego to będzie najprostsze rozwiązanie) o określonej godzinie bez użycia żadnych przycisków, po prostu załącza się prąd, ramie wykonuje ruch w jedną stronę, najlepiej aby ze 2-3 sekundy po otwarciu odczekało po czym wykonuje ruch powrotny i kończy program, po około minucie programator czasowy odcina prąd i zadanie wykonane.
Może ktoś będzie w stanie jakoś rozwiązać ten problem?
Próbowałem przerobić kod, który powoduje, że ramię idzie do końca, po czym szybciej wraca do pozycji początkowej i ponownie wykonuje to samo.
Kod:
#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
}
Kod:
#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?
int blokada = 0;
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
blokada = 0;
}
pozycja = pozycja + zmiana; //Zwiększenie aktualnej pozycji serwa
delay(200); //Opóźnienie dla lepszego efektu
blokada = 1;
}
Może ktoś będzie w stanie jakoś rozwiązać ten problem?