• 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
Wykres Temperatury.
#1
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.
 
#2
Poczytaj o tablicach jednowymiarowych.
 
#3
(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
 
#4
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.
 
#5
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.
 
#6
Problem rozwiązany.

Kod:
myGLCD.setColor(0, 0, 0);
  for (j = 1; j < 319; j++) {
    myGLCD.drawPixel(j, tempTab[j]);
  }

  for (j = 0; j < 319; j++) {
    tempTab[j] = tempTab[j + 1];
  }

  myGLCD.setColor(255, 255, 255);
  for (j = 1; j < 318; j++) {
    myGLCD.drawPixel(j, tempTab[j]);
  }
 
  


Skocz do:


Przeglądający: 1 gości