dominos96 Napisano Kwiecień 26, 2011 Udostępnij Napisano Kwiecień 26, 2011 Chciałem robotowi dorobić efekt Knight Rider (jak ktoś nie wie to taki wędrujący punkt zapalonych diod 😕 ) i mam pytanie jak w bascomie zrobić aby podczas jazdy robota, w tym samym czasie działał ten efekt. Tak aby w tym samym czasie działały dwie pętle. Cytuj Link do komentarza Share on other sites More sharing options...
Sabre Kwiecień 26, 2011 Udostępnij Kwiecień 26, 2011 Tak aby w tym samym czasie działały dwie pętle. Mówiąc w skrócie, w żadnym języku programowania tego nie zrobisz. Mikrokontroler może w danym czasie wykonywać tylko jedno polecenie. Dałoby się to zrobić łącząc dwie pętle w jedną, ale wtedy czasy działania tych pętli muszą być ze sobą powiązane, np. główną pętlą jest pętla efektu, bo ona wykonuje się długo, a raczej zmiany są co kilkaset ms, a w trakcie tej "bezczynności" mikrokontrolera, podczas tych kilkuset ms wykonujesz pozostałe polecenia typu sprawdzanie czujników, zmiana obrotów silników itp. Cytuj Link do komentarza Share on other sites More sharing options...
Bobby Kwiecień 26, 2011 Udostępnij Kwiecień 26, 2011 Wydaje mi się, że to dobry moment, żeby zainteresować się przerwaniami, dominos96 😉 Zaprzągłbyś do tego wewnętrzny timer, jeśli przerwanie by było wywoływane wystarczająco rzadko to wystarczyłoby, żebyś w obsłudze przerwania przesuwał tylko zapalony punkt w którąś stronę, ze sprawdzeniem czy to już nie ostatnie, wtedy zmiana kierunku. Jeśli przerwanie byłoby wykonywane stosunkowo często, to byś musiał jeszcze dorobić coś, żeby obsługa przerwania przesuwała ten punkt co kilka wywołań (najprościej imo zmienna+warunek+inkrementacja zmiennej). Cytuj Link do komentarza Share on other sites More sharing options...
lukix Kwiecień 26, 2011 Udostępnij Kwiecień 26, 2011 A w bascomie nie ma czegoś takiego jak wątki? Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
pawel Kwiecień 26, 2011 Udostępnij Kwiecień 26, 2011 Wątek, to mechanizm, który wymusza system operacyjny, a nie język. Wiec nie, w bascomi nie ma wątków. Chyba, że napiszesz sobie wielowątkowy system operacyjny na avra. dominos96, możesz jeszcze zrobić warunek, że co ileś tam wykonań pętli głównej nastąpi przesunięcie, ale dużo lepszym rozwiązaniem jest zastosowanie przerwań, tak jak pisze Bobby. Cytuj Link do komentarza Share on other sites More sharing options...
matrix Kwiecień 26, 2011 Udostępnij Kwiecień 26, 2011 Zależy co chcesz w całym programie umieścić? W sumie to nie jest trudne. Trzeba wziąć pod uwagę co będzie ważniejsze, czy program wykonujący knight rider'a czy to drugie co chcesz umieścić. Dalej polecam lekturę na temat przerwań i do tego komendę select case. Do całości dorzuć sprzętowy lub programowy PWM i będziesz miał efekt knight rider z powolnym wygaszaniem diod. Cytuj Link do komentarza Share on other sites More sharing options...
dondu Kwiecień 26, 2011 Udostępnij Kwiecień 26, 2011 Tutaj znajdziesz parę zasad które powinieneś przestrzegać, by to zrobić na przerwaniach. Niestety kod jest w C, ale idea jest taka sama. Ciebie dotyczą punkty 3 i 4. zobacz: Błędy popełniane w przerwaniach Jeżeli dobrze to wykonasz to procesor i tak będzie się jeszcze nudził. Cytuj Link do komentarza Share on other sites More sharing options...
feriar Kwiecień 26, 2011 Udostępnij Kwiecień 26, 2011 siema,tutaj mam dwa efekty kitta napisane własnoręcznie, zobacz jak są zbudowane. Wsad jest dla atmega48 'KITT EFFECT 'feriar(c) '2011 $regfile = "m48def.dat" $crystal = 8000000 Config Pind.0 = Output Config Pind.1 = Output Config Pind.2 = Output Config Pind.3 = Output Config Pind.4 = Output Config Pind.5 = Output Config Pind.6 = Output Config Pind.7 = Output D1 Alias Pind.0 D2 Alias Pind.1 D3 Alias Pind.2 D4 Alias Pind.3 D5 Alias Pind.4 D6 Alias Pind.5 D7 Alias Pind.6 D8 Alias Pind.7 Do Set D1 Waitms 30 Reset D1 Waitms 30 Set D2 Waitms 30 Reset D2 Waitms 30 Set D3 Waitms 30 Reset D3 Waitms 30 Set D4 Waitms 30 Reset D4 Waitms 30 Set D5 Waitms 30 Reset D5 Waitms 30 Set D6 Waitms 30 Reset D6 Waitms 30 Set D7 Waitms 30 Reset D7 Waitms 30 Set D8 Waitms 30 Reset D8 Waitms 30 Set D8 Waitms 30 Reset D8 Waitms 30 Set D7 Waitms 30 Reset D7 Waitms 30 Set D6 Waitms 30 Reset D6 Waitms 30 Set D5 Waitms 30 Reset D5 Waitms 30 Set D4 Waitms 30 Reset D4 Waitms 30 Set D3 Waitms 30 Reset D3 Waitms 30 Set D2 Waitms 30 Reset D2 Waitms 30 Set D1 Waitms 30 Reset D1 Waitms 30 Loop End 'KITT EFFECT 1 'feriar(c) '2011 $regfile = "m48def.dat" $crystal = 8000000 Config Pind.0 = Output Config Pind.1 = Output Config Pind.2 = Output Config Pind.3 = Output Config Pind.4 = Output Config Pind.5 = Output Config Pind.6 = Output Config Pind.7 = Output D1 Alias Pind.0 D2 Alias Pind.1 D3 Alias Pind.2 D4 Alias Pind.3 D5 Alias Pind.4 D6 Alias Pind.5 D7 Alias Pind.6 D8 Alias Pind.7 Do Set D4 Waitms 30 Reset D4 Waitms 30 Set D5 Waitms 30 Reset D5 Waitms 30 Set D3 Waitms 30 Reset D3 Waitms 30 Set D6 Waitms 30 Reset D6 Waitms 30 Set D2 Waitms 30 Reset D2 Waitms 30 Set D7 Waitms 30 Reset D7 Waitms 30 Set D1 Waitms 30 Reset D1 Waitms 30 Set D8 Waitms 30 Reset D8 Waitms 30 Set D8 Waitms 30 Reset D8 Waitms 30 Set D1 Waitms 30 Reset D1 Waitms 30 Set D7 Waitms 30 Reset D7 Waitms 30 Set D2 Waitms 30 Reset D2 Waitms 30 Set D6 Waitms 30 Reset D6 Waitms 30 Set D3 Waitms 30 Reset D3 Waitms 30 Set D5 Waitms 30 Reset D5 Waitms 30 Set D4 Waitms 30 Reset D4 Waitms 30 Loop End znając niektóre osoby to napiszą że ten kod można było napisać w paru linijkach ale działa,powodzenia 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Bobby Kwiecień 26, 2011 Udostępnij Kwiecień 26, 2011 Ja bym sugerował zainteresowanie się poleceniem rotate w bascomie 😉 Cytuj Link do komentarza Share on other sites More sharing options...
feriar Kwiecień 26, 2011 Udostępnij Kwiecień 26, 2011 dopiero się uczę Bobby, ale będe miał to na względzie także dzięki 😃 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!