Skocz do zawartości

Pomocna odpowiedź

Napisano

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

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

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.

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

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

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.

marcin24.07 też mam książkę Pana Góreckiego i pierwszy raz wzmianka o poleceniu Debounce jest na 82 stronie, 13 wiersz, 11 słowo 🤣 Uważam, że jest to najlepsza książka o mikrokontrolerach dla początkujących 😉

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