Mam mały projekt do zrobienia, którego głównym celem jest po naciśnięciu przycisku uruchomić sekwencję sterującą serwomechanizmem, a na koniec włączyć buzzer. Wygooglowałem tutoriala z gotowym już kodem, który zacząłem dostosowywać do moich wymogów, lecz napotkałem małe przeszkody. Może na początek kod, który już mam:
A teraz w czym mam problemy:
1. Po wciśnięciu przycisku sekwencja ładnie się uruchamia, lecz ogólne założenie jest takie, że ten przycisk będzie cały czas wciśnięty co powoduje, że sekwencja się zapętla. Jak zatrzymać wykonywanie się tej pętli po jednokrotnym wykonaniu? Próbowałem ze zwykłym break; ale bezskutecznie.
2. Chciałem po wykonaniu się całej tej sekwencji włączyć buzzer (w ogólnym zamyśle ma on sygnalizować położenie modelu w wysokiej trawie). Są jednak z tym problemy. W obecnej postaci kodu, w momencie zasilenia całego układu buzzer już zaczyna "piszczeć", a kiedy zakończy sekwencję i wchodzi na linię włączającą buzzer piszczy głośniej. Jest tak, jak by jakieś napięcie już wcześniej lekko wysterowywało buzzerek. Buzzer powinien być sterowany jedynką logiczną na porcie mikrokontrolera.
Tutaj jest cały schemat układu EvB (nie mogę wyciąć samej konfiguracji buzzera - nie mam pojęcia dlaczego).
3. Czy to normalne, że po wciśnięciu przycisku, cała sekwencja uruchamia się z lekkim opóźnieniem, takim ok. 0.5s ?
4. Jeżeli _delay_ms(1000) to opóźnienie 1s to dlaczego _delay_ms(15000) nie trwa już 15 s. tylko coś ok. 7? Taktowanie 16MHz.
I takie pytanie pozakonkursowe. Do obsługi tego ustrojstwa ma być menu wyświetlane na LCD + klawiatura. Do obsługi wyświetlacza chcę zastosować bibliotekę ze strony http://radzio.dxp.pl/hd44780/hd44780_avr_4-bit_norw_c.htm
Rozumiem, że wystarczy ją wrzucić do folderu z projektem, dopisać w załącznikach plik headerowy i żeby np. wyświetlić coś na wyświetlaczu, w programie użyć funkcji gdzie w parametrze będzie podana zmienna typu char z wpisanym tekstem ?
Na chwilę obecną więcej pytań nie mam.
Kod: C / C++
A teraz w czym mam problemy:
1. Po wciśnięciu przycisku sekwencja ładnie się uruchamia, lecz ogólne założenie jest takie, że ten przycisk będzie cały czas wciśnięty co powoduje, że sekwencja się zapętla. Jak zatrzymać wykonywanie się tej pętli po jednokrotnym wykonaniu? Próbowałem ze zwykłym break; ale bezskutecznie.
Kod: C / C++
2. Chciałem po wykonaniu się całej tej sekwencji włączyć buzzer (w ogólnym zamyśle ma on sygnalizować położenie modelu w wysokiej trawie). Są jednak z tym problemy. W obecnej postaci kodu, w momencie zasilenia całego układu buzzer już zaczyna "piszczeć", a kiedy zakończy sekwencję i wchodzi na linię włączającą buzzer piszczy głośniej. Jest tak, jak by jakieś napięcie już wcześniej lekko wysterowywało buzzerek. Buzzer powinien być sterowany jedynką logiczną na porcie mikrokontrolera.
Tutaj jest cały schemat układu EvB (nie mogę wyciąć samej konfiguracji buzzera - nie mam pojęcia dlaczego).
3. Czy to normalne, że po wciśnięciu przycisku, cała sekwencja uruchamia się z lekkim opóźnieniem, takim ok. 0.5s ?
4. Jeżeli _delay_ms(1000) to opóźnienie 1s to dlaczego _delay_ms(15000) nie trwa już 15 s. tylko coś ok. 7? Taktowanie 16MHz.
I takie pytanie pozakonkursowe. Do obsługi tego ustrojstwa ma być menu wyświetlane na LCD + klawiatura. Do obsługi wyświetlacza chcę zastosować bibliotekę ze strony http://radzio.dxp.pl/hd44780/hd44780_avr_4-bit_norw_c.htm
Rozumiem, że wystarczy ją wrzucić do folderu z projektem, dopisać w załącznikach plik headerowy i żeby np. wyświetlić coś na wyświetlaczu, w programie użyć funkcji
Kod: C / C++
Na chwilę obecną więcej pytań nie mam.
