Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 20 kwi 2024, o 10:45


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 19 maja 2015, o 15:51 
Offline
Użytkownik

Dołączył(a): 20 mar 2015
Posty: 104
Pomógł: 0

Zakładam nowy temat bo w starym już zbyt wiele kwestii poruszono.

Dany jest testowy kod, który steruje 5 serwomechanizmami:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Problem polega na tym, że serwa startują jednocześnie, zachodzi zjawisko hazardu. Domyślam się, że na pewno chodzi o tę część:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Sprawa niby prosta, ale jakakolwiek zmiana powoduje brak działania programu. Czy wie ktoś co zrobić aby uruchamiać serwa po kolei, tzn. od SERVO1 do SERVO5?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 maja 2015, o 21:37 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Nie zrobi to znacznej różnicy, a w sumie nie wiadomo w jakim odstępie to ma być:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 maja 2015, o 23:22 
Offline
Użytkownik

Dołączył(a): 20 mar 2015
Posty: 104
Pomógł: 0

Niestety, bez zmian... A jest jakaś możliwość aby zmniejszyć prędkość serw? W tym momencie ruszają one z całą mocą...

------------------------ [ Dodano po: 33 minutach ]

Spróbowałem wstawić licznik ale to nic nie daje. Dalej serwa ruszają jednocześnie.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Chodzi mi o to abym mógł sobie ustawić przerwy pomiędzy ruchem kolejnych silników... Jakieś pomysły? :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 maja 2015, o 16:14 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

To co podałem wcześniej opóźnia na bardzo krótko (rzędu ms). To co próbowałeś nie zadziałało z 3 powodów:
- i jest w warunkach przycisków, a po starcie program wcale nie wymaga aby jakikolwiek był wciśnięty bo ustawia serwa na pozycje środkowe
- jeśli wszystkie klawisze byłyby wciśnięte to po spełnieniu warunku i jest zwiększone i w następnym warunku ma odpowiednią wartość
- i tworzysz już w warunku i zawsze a taką samą wartość w każdym obiegu pętli

Spróbuj jak poniżej. Dołożone są dodatkowe zmienne. Po starcie są zerami, a serwa zostaną uruchomione jak będą miały wartość różną od zera. W cyklicznym przerwaniu z pomocą dodatkowego licznika są one ustawiane po pewnym czasie od startu programu. Raz ustawione nie są już zmieniane.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 2 pikosekundach ]

Panicz74 napisał(a):
A jest jakaś możliwość aby zmniejszyć prędkość serw?

Tak jeśli przykładowo do zmiennej servo1 nie przypiszesz od razu docelowej liczby tylko z stopniowo będziesz ją zwiększał, aż do wymaganej wartości.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 maja 2015, o 23:16 
Offline
Użytkownik

Dołączył(a): 20 mar 2015
Posty: 104
Pomógł: 0

Niestety, program działa jak ten pierwotny :( Wszystkie serwa ruszają jednocześnie. Tak sobie pomyślałem, czy istnieje jakiś sposób by zapauzować w danym miejscu program, aby go wznowić należałoby wcisnąć ponownie przycisk i by działał do momentu wystąpienia kolejnej pauzy?

Na przykład takie coś:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jest na to jakiś sposób?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 maja 2015, o 19:55 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Panicz74 napisał(a):
Niestety, program działa jak ten pierwotny Wszystkie serwa ruszają jednocześnie.

Sprawdź to jeszcze raz. Ostatecznie zmodyfikuj kod w ten sposób, a zamiast serw podłącz LEDy
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2015, o 22:50 
Offline
Użytkownik

Dołączył(a): 20 mar 2015
Posty: 104
Pomógł: 0

Już wykombinowałem :) Oto kawałek kodu, który pomógł:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tutaj wrzucam filmik z działaniem:
https://www.youtube.com/watch?v=AAyQoECwwXM



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO