• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Wyświetlacz do samochodu - termometr, zegar, prędkość - rzadko się odświeża
#21
Zauważ, że pisząc w taki sposób:
Kod:
    if (gps.encode(Serial1.read())){
    setDisplay();
    }
funkcja setDisplay() zmieniająca symbol z iksa na satelitę ma szansę wykonać się tylko w przypadku, gdy funkcja gps.encode zwróci wartość (będziesz miał dane z GPS). W przypadku gdy danych nie masz nie dojdzie do zmiany na ekranie.


Tutaj program aż się prosi o dodanie else'a, ale z tym też uważnie - przy utracie pojedynczego pakietu danych z GPS iks może "wskoczyć" na ekran tylko na moment i przy większej częstotliwości utraty pakietów będziesz miał iksosatelitę na ekranie.

Możesz spróbować dodać np. zmienną counter, która będzie w else zwiększana i dopiero po osiągnięciu np. wartości 10 wywoła zmianę na ekranie i reset countera.
 
Odpowiedź
#22
Wink 
(23-04-2024, 17:01)MadMrQ napisał(a): Zauważ, że pisząc w taki sposób:
Kod:
    if (gps.encode(Serial1.read())){
    setDisplay();
    }
funkcja setDisplay() zmieniająca symbol z iksa na satelitę ma szansę wykonać się tylko w przypadku, gdy funkcja gps.encode zwróci wartość (będziesz miał dane z GPS). W przypadku gdy danych nie masz nie dojdzie do zmiany na ekranie.


Tutaj program aż się prosi o dodanie else'a, ale z tym też uważnie - przy utracie pojedynczego pakietu danych z GPS iks może "wskoczyć" na ekran tylko na moment i przy większej częstotliwości utraty pakietów będziesz miał iksosatelitę na ekranie.

Możesz spróbować dodać np. zmienną counter, która będzie w else zwiększana i dopiero po osiągnięciu np. wartości 10 wywoła zmianę na ekranie i reset countera.

Ta funkcja 'encode' pobiera pojedynczy znak i sygnalizuje, gdy udało jej się skompletować dane z GPS'a - kompletną odpowiednią sekwencję. Ona dziesiątki lub setki razy zwraca false i raz zwróci true. Z logicznego punktu widzenia powinna zwracać 3 wartości - MAM_DANE, BRAK_FIXA, JESZCZE_NIE_WIEM.
Dla kompletności programu należałoby wykrywać też dłuższy brak danych na porcie GPS'a - praktycznie kilkusekundowa 'cisza' sugeruje jakiś problem sprzętowy - najpewniej coś się odpięło, normalnie GPS wysyła dane co najmniej raz na sekundę.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości