Skocz do zawartości

Kurs STM32L4 – #14 – czujnik odległości, wyświetlacz 7-seg.


Komentator

Pomocna odpowiedź

Kurs STM32L4 – #14 – czujnik odległości, wyświetlacz 7-seg.

Wracamy do tematu liczników w STM32L4. Tym razem wykorzystamy je do obsługi wyświetlaczy 7-segmentowych oraz do mierzenia odległości za pomocą czujnika ultradźwiękowego HC-SR04. Przy okazji w ramach ciekawostki użyjemy też jednego ze wzmacniaczy, który wbudowany jest wewnątrz mikrokontrolera STM32L476RG.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Link do komentarza
Share on other sites

Przypominamy: w komentarzach do kursów rozmawiamy wyłącznie na tematy związane z konkretnym kursem. Mile widziane są również informacje od osób, które korzystały wcześniej z naszych poradników. Wszystko po to, aby kursanci, którzy mają zamiar korzystać z tego kursu nie musieli "przedzierać" się przez dziesiątki postów na inne tematy. Tematy na pytanie, które nie są związane z kursem można zadawać na naszym forum o mikrokontrolerach.

Link do komentarza
Share on other sites

Zachęcam do lektury kolejnej części kursu STM32L4 - tym razem pokazujemy jak wykorzystać liczniki do tego, aby obsługiwać wyświetlacze 7-segmentowe oraz czujniki odległości, a to wszystko w pełni sprzętowo (dzięki czemu pętla główna programu jest praktycznie pusta). Warto wykonać te ćwiczenia, bo nieumiejętne obsługiwanie tego typu modułów może przysporzyć wiele kłopotów. W tym artykule opisaliśmy jedną z metod, dzięki której całość jest wręcz banalnie prosta 🙂

Link do komentarza
Share on other sites

Wkradł się drobny błąd. Przy podłączeniu wyświetlacza 7 seg. jest napisane: Wszystkie piny, do których podłączyliśmy wyświetlacz, konfigurujemy jako wejścia, powinno być: konfigurujemy jako wyjścia 

Przy wzmacniaczu operacyjnym miałem trochę kłopotów z błędami kompilacji ale w końcu wszystko ruszyło.

Powtórka z timerów fajnie zrobiona.

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

Hej, miałem problem z podłączeniem układu ale sobie poradziłem 🙂

Swoją drogą nikła konwersacja pod tym odcinkiem w porównaniu do poprzednich części. Czyżby niewiele osób tu dotarło? 😄

 

Edytowano przez dudoxx
Link do komentarza
Share on other sites

1 godzinę temu, dudoxx napisał:

Czyżby niewiele osób tu dotarło? 😄

Miejmy nadzieję, że po prostu dla większości ta część nie wymagała żadnych pytań 😉

Link do komentarza
Share on other sites

Ja mam pytanie. Domyślnie CubeMX wystawia mi PA2 jak TIM2_CH3 czyli ten od generowania impulsu PWM. Niestety ten pin nie działa (w sensie mam na ekranie value=0) i faktycznie ustawienie ręczne pinu PB10 pomaga. Czemu również nie skorzystaliśmy z Kanału drugiego tylko 1 i 3?

Aktualizacja:

Ok użycie kanału drugiego jest dalej w poradniku. Nie mniej zastanawia mnie to ze pin PA2 nie działa a pin PB10 tak

Link do komentarza
Share on other sites

Dnia 1.02.2023 o 11:33, dudoxx napisał:

Może dodam jeszcze, że korzystam z USART1 więc pin PA2 z którego korzysta USART2 mam wolny 🙂

Jeśli używasz płytki Nucleo to konieczna może się okazać modyfikacja zworek:

uart2.thumb.png.4629090842237669c9fde77e4a9c7b03.png

Może dlatego dlatego PA2 "nie działa"?

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Hej, czy nie lepiej byłoby zdefiniować zmienne start i stop (w przypadku obsługi czujnika ultradźwiękowego) przed pętlą while zamiast redefiniować je w każdym kolejnym obiegu pętli while?

Czyli np.

uint32_t start;
uint32_t stop;

while(1){
      value[1] = HAL_TIM_ReadCapturedValue(&htim2, TIM_CHANNEL_1);
      value[2] = HAL_TIM_ReadCapturedValue(&htim2, TIM_CHANNEL_2);
      ...
}

Czy nie ma to żadnego znaczenia?

Link do komentarza
Share on other sites

@pawel1218 tak, oczywiście można tak zrobić. W tym przypadku nie ma to jednak żadnego większego znaczenia. Oczywiście zakładam, że w powyższym kodzie miały być używane zmienne start/stop zamiast tablicy value i jest to tylko "literówka" przy pisaniu przykładowego kodu 😉 

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

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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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