Skocz do zawartości

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


Pomocna odpowiedź

Napisano

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.

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.

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 🙂

  • 4 tygodnie później...

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.

@padus miło słyszeć, że kolejny odcinek kursu Ci się podobał 🙂 Dziękuję za zgłoszenie "literówki", już poprawiłem na blogu.

  • 1 rok później...
(edytowany)

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
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ń 😉

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

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

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
  • 2 miesiące później...

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?

@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
  • 1 rok później...
(edytowany)

@Treker Czy do obsługi drugiego takiego czujnika odległości wystarczy użycie tylko jednego PWM'a z pierwszego timera? A wtedy innym timerem zbierać dane z drugiego czujnika? 

Edytowano przez Kamro
  • Lubię! 1

@Kamro przyznam, że nie testowałem takiego rozwiązania, jednak takie rozwiązanie powinno działać. Warto jednak pamiętać, że jeśli wyzwolimy dwa identyczne czujniki, w identycznym momencie to mogą dość mocno się zakłócać. Ultradźwięki świetnie się odbijają praktycznie od wszystkiego, więc dużo tutaj też zależy od rozmieszczenia czujników. Wydaje mi się więc, że większym problemem będzie tutaj sama charakterystyka tych czujników 😉

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