logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Problem z działaniem programu mierzącego odległość przy pomocy czujnika HC-SR04

MagnusBuzard 18 Sty 2024 20:21 366 2
REKLAMA
  • #1 20916641
    MagnusBuzard
    Poziom 2  
    Posty: 2
    Witam. Mam problem z programem napisanym w arduinio z wykorzystaniem płytki seeed xiao nrf52840, czujnika odległości HC-SR04.
    Płytka ma łączyć się z telefonem przez wbudowany moduł bluetooth. Napisałem program z wykorzystaniem biblioteki arduinoble.h, na podstawie przykładów z tej biblioteki. Kiedy program jest prosty i ma wyłączać lub włączać LED po odbiorze danych wysłanych z aplikacji nie ma problemu. Tak samo ze sterowaniem silnika serwo zasilanego z osobnej przetwornicy.
    Problem pojawia się gdy próbuje odczytać odległość przy użyciu wyżej wymienionego czujnika. W tym wypadku przy próbie połączenia wyskakuje informacja o zbyt długim upływie czasu. Czujnik w tym czasie działa i pokazuje poprawną odległość i wysyła ją do serial monitora.
    Czy ktoś wie czemu nie mogę nawiązać połączenia, lub w jaki sposób zmodyfikować program abym mógł się połączyć z płytką.
    Poniżej załączam swój program.
    Załączniki:
    • sensor_HC_SR04.zip (1.23 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • Pomocny post
    #2 20918233
    kaczakat
    Poziom 34  
    Posty: 1748
    Pomógł: 317
    Ocena: 230
    Nie rzucaj się tak od razu na głęboką wodę, zacznij od prostszych rzeczy jak choćby wklejenie kodu w znaczniki C++ by można go było przeczytać.
    Zmierz sobie czas trwania impulsu używając millis() lub micros() z podziałem na etapy pomiaru przez switch case.
    A wklejony kod wygląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    Pomogłem? Kup mi kawę.
  • #3 20922345
    MagnusBuzard
    Poziom 2  
    Posty: 2

    Okazało się, że ta biblioteka nie lubi się zbytnio z funkcją pulsein, która działa zaporowo. Po prostu zrobiłem zliczanie czasu za pomocą micros() i wszystko działa jak należy. Dzięki za pomoc.
REKLAMA