Skocz do zawartości
gorzki

3 serwomechanizmy w rozdzielaczu hydraulicznym

Pomocna odpowiedź

#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

 

Udostępnij ten post


Link to post
Share on other sites

Co próbowałeś dokładnie i co nie wyszło?

Udostępnij ten post


Link to post
Share on other sites
4 godziny temu, gorzki napisał:

jak zmodyfikować kod, aby..

gorzki, to tak nie działa. Jeżeli z powodu braku wiedzy zrobiłeś prostą taczkę i pytasz jak ją zmodyfikować by mieć na podwórku samochód to sam rozumiesz, że żadnych konkretów nie dostaniesz. Nawet gdyby ktoś zaczął mówić o przekładniach różnicowych, skrzyni biegów, zawieszeniu, półosiach, karoserii samonośnej czy silniku 4-suwowym to i tak wiele z tego nie wyniesiesz gdy umiesz jedynie połączyć koło ze skrzynką na pomidory. Jedyna rada to wziąć się w garść, zacząć lekcje programowania od początku, robić przykłady od najprostszych do coraz trudniejszych aż nabędziesz wprawy i zrozumiesz jak korzystać z procesora tak, by wszystkie jednoczesne potrzeby Towjego projektu były zaspokojone. Nie twierdzę, że to rocket science, ale kilka dni z Arduino to nie jest wystarczająca baza do robienia takich rzeczy. Nie na darmo proste projekty opierają się na sekwencyjnym wykonywaniu jednego ciągu instrukcji - to jest łatwe. Równoległość wymaga zmiany podejścia i zupełnej zmiany myślenia o strukturze programu. Tak, ludzie korzystają z millis(() i jest to jedna z możliwości. Nie jest to wytrych do wszystkiego, ale też nie jedyna opcja.

Było tu wiele wątków o tym samym. Jeśli bardzo się napaliłeś i od razu chcesz skoczyć do basenu, przeszukaj Forum pod tym kątem (znaczy wielowątkowości, równoległości i millis a nie skakania do wody rzecz jasna). Nie ma sensu każdemu opisywać tego samego. Na start:

I jeszcze pamiętny wątek SOYER'a, w którym Elvis z dobrym skutkiem (i podobną cierpliwością) tłumaczył działania równoległe:

Poczytaj, przemyśl, przygotuj się teoretycznie, popróbuj coś samemu i dopiero wtedy w razie problemów, pytaj. 

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...