Skocz do zawartości

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

 

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
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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.