Witam serdecznie. Wykonałem wykresik temperatury który na dodatek się re skaluje w zależności od minimalnej i maksymalnej temperatury mierzonej. Problem polega na tym iż pracuje z menu. Więc przy zmianie ekranu wymazuje mi się poprzedni stan wykresu. Syn zajął mi komputer ale postaram się wkleić kod jak się do niego się dostane. Działa dość prosto - myGLCD.drawPixel(osX,temperatura); osX++; Pytanie jak zrobić by moje 360pixeli pomiarowych zapisać by po powrocie z menu nadal był widoczne. Nie dam przecież 360 zmiennych i przepisywaniem jednej do drugie. Zastanawiam się nad wykorzystaniem karty SD. By zapisywał pomiary i odczytywał ostatnie 360. Możecie dać zarys jak to zrobić. Dostępne mam też na pokładzie RTC.
Poczytaj o tablicach jednowymiarowych.
(05-12-2017, 10:14)krn78 napisał(a): [ -> ]Poczytaj o tablicach jednowymiarowych.
Drogi krn78 właśnie zrobiłem to na tablicy i działa. Problem w tym iz wykres maluje mi się od lewej do prawej. Cala noc chciałem wykonać troszkę inne wyświetlanie ale niestety nie wyszło. A mianowicie by rysował się wykres od prawej strony i "wysuwał" się w lewo. Czyli aktualnya temperatura była zawsze skrajnym pixlem a każdy poprzedni pomiar przesuwał się w lewo. Nie wiem czy dobrze to wytłumaczyłem ale prób zrobiłem setki i zawsze cos było nie tak
Hmm... nie spotkałem się nigdy z takim problemem, ale jeśli masz na liście pomiary, to być może do ich przeglądania używasz pętli for. Jeśli tak, to może przeglądaj listę od końca? W sensie: for(int i=n, i>=0, i--), gdzie n jest ostatnim elementem tablicy.
A może potraktować to jako coś w rodzaju negatywu obrazka. Aby z danego piksela zrobić negatyw, trzeba odczytać jego kolor i odjąć tę wartość od maksymalnej liczby kolorów danego formatu. Możesz spróbować zastosować tę zasadę i tutaj. Zamiast koloru weź pod uwagę współrzędną x.
Czyli użyć for w for tylko jedna liczy w przód a droga w tył. Coś w tym jest jutro z rana wypróbuje . Dzięki za podpowiedz.
- edit -
Próbowałem na wszelkie sposoby ale maluje mi jakieś kreski.
Kod:
for (k = 320; k > 0 ; k--) {
for (j = 0; j < 320; j++) {
myGLCD.drawPixel(k, tempTab[j]); //tempTab to tablica z pomiarami temperatury
}
}
zamieniałem miejscami J i K i FOR-y ale nic to nie dało ;( Nie wiem jak mam to rozwiązać.
Logi-kując musiał bym mieć 2x FOR ale liczące w tym samym momencie.