Skocz do zawartości

Serwo do rozjazdów


marcin24.07

Pomocna odpowiedź

Witam.

Z góry przepraszam jeśli taki temat już był. Moją przygodę z programowaniem dopiero zaczynam i jestem na razie zielony z tego. Jestem modelarzem i chciałem zrobić napęd do rozjazdów i pomyślałem o serwach.

Napisałem w bascomie taki program do zmiany kierunku zwrotnicy o pewien kąt:

$regfile = "attiny2313.dat"
$crystal = 11059200

Config Portd.5 = Output
Config Portd.4 = Output
Config Pind.0 = Input
Config Pind.1 = Input
Config Servos = 2 , Servo1 = Portd.4 , Servo2 = Portd.5 , Reload = 10

Enable Interrupts
Servo(1) = 10
Servo(2) = 10
Do
If Pind.0 = 0 Then
   Servo(1) = 10
   Waitms 10
   Servo(1) = 12
End If
If Pind.1 = 0 Then
   Servo(2) = 10
   Waitms 10
   Servo(2) = 12

End If
Loop
End

Problem polega na tym, że gdy podam pind.0=0 wtedy serwo(1) obróci się o pewien kąt i zostaje w tym pomożeniu dopóki pind.0=0 ale program się zagnieżdża i nie umiem już wykonać polecenia dla innych serw np. Pind.1=0.

Bardzo proszę o pomoc jak to rozwiązać by po uruchomieniu np 4 serw mogłem włączyć kolejne.

Pozdrawiam

Link do komentarza
Share on other sites

Witaj!

Twój problem wydaje się być prosty. Masz zakłócenia na stykach. Proszę, ten program powinien działać. Jeśli nie pisz co jest nie tak 😉

$regfile = "2313def.dat"   'w BASCOM-ie Attiny2313 ma przypisany inny plik
$crystal = 11059200

Config Portd.5 = Output
Config Portd.4 = Output
Config Pind.0 = Input
Config Pind.1 = Input
Config Servos = 2 , Servo1 = Portd.4 , Servo2 = Portd.5 , Reload = 10

Enable Interrupts
Servo(1) = 10
Servo(2) = 10

Do
Debounce Pind.0 , 0 , Stan1 , Sub   'Odkłócanie styków
Debounce Pind.1 , 0 , Stan2 , Sub   'Odkłócanie styków
Loop
End

Stan1:
Servo(1) = 10
Waitms 10
Servo(1) = 12
Return

Stan2:
Servo(2) = 10
Waitms 10
Servo(2) = 12
Return
  • Lubię! 1
Link do komentarza
Share on other sites

Bardzo dziękuje za pomoc.

Do końca nie działało to tak jak chciałem bo serwo obróciło się o zadany kąt ale zaraz wracało do punktu początkowego ale mogłem sterować również drugim.

Napisałem dodatkowe:

Debounce Pind.0 , 1 , Stan3 , Sub 'Odkłócanie styków

Debounce Pind.1 , 1 , Stan4 , Sub 'Odkłócanie styków

I działa. Chyba, że da się to jeszcze jakoś zmienić? Pobawię się też jeszcze z tym.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Przepraszam, że znów piszę wieczorem ale nie było mnie w domu. Bardzo dziękuje za pomoc. Sprawdziłem te: Config Debounce = 20 i Waitms 10 ale nie pomogło. Zostawię to tak jak jest. I tak jestem wdzięczny za pomoc bo czytałem książkę o podstawach bascoma i nie było tam takiego polecenia "Debounce" i nie wiem jak bym se poradził.

Pozdrawiam

Link do komentarza
Share on other sites

Można wiedzieć (tak z czystej ciekawości) jaki tytuł nosi ta książka? Dosyć dziwna sprawa, że nie było nic o poleceniu Debounce. Wprawdzie chodzi w nim tylko o to żeby dwa razy sprawdzić stan danego pinu. Raz i drugi po 20ms. Zaś poleceniu Config Debounce jest po to żeby ustalić czas jaki ma odczekać mikrokontroler przed kolejnym sprawdzeniem stanu pinu.

  • Lubię! 1
Link do komentarza
Share on other sites

Przepraszam, poprawiam się było to w książce bo jeszcze raz to prześledziłem. Nie wiem czemu tego nie zauważyłem, a nie było to na samym końcu książki. A książka to Piotr Górecki - Mikrokontrolery dla początkujących.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.