Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

wyswietlanie po 10 sekund na wyswietlaczu

18 Mar 2017 12:39 774 15
  • Poziom 19  
    Witam. Jak robić krótki program, który przez 10 sekund, na wyświetlaczu będzie wyświetlał "stacja pogody", po 10 sekundach, pokazywało samą temperaturę i następnie wilgotność (temperatura i wilgotność w pętli), jak to zrobić?

    https://megawrzuta.pl/download/0b66174a8ce43c5a7a12da014efdc2f5.html
  • Poziom 23  
    Algorytm sam już opisałeś.
    A żeby Ci pomóc to schemat i język w jakim piszesz.

    P.S.
    Co to za plik z rozszerzeniem *.ino, który podlinowałeś? Czym to otworzyć?
  • Poziom 19  
    Wojciech. napisał:
    @Press W ArduinoIDE.
    Dodano po 10 [minuty]:
    @chris18404


    Code:
    void setup(){
    

    }

    void loop(){

    lcd.print("STACJA POGODOWA");
    delay(5000);

    temperatura();
    delay(ile chcesz);
    wilgotnosc();
    delay(ile chcesz);


    }

    void temperatura(void){

    lcd.clear();
    lcd.print(temperatura);

    }



    void wilgotnosc (void){

    lcd.clear();
    lcd.print(wilgotnosc);

    }


    Spróbuj taki szablon


    błąd wyskoczył.
  • Poziom 19  
    Wojciech. napisał:
    @chris18404 Bo powtórzyły Ci się zmienne. Zmień nazwę void temperatura(void) na np void temp(void), wilgotnosc tak samo.


    niestety źle wyswietla:
  • Poziom 19  
    Wojciech. napisał:
    w tych funkcjach po lcd.clear() ustaw sobie pozycje kursora.



    nie działa.
  • Poziom 16  
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Poprawione złe pozycje kursora pierwsza oś x druga y .
  • Poziom 19  
    adasikp napisał:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Poprawione złe pozycje kursora pierwsza oś x druga y .



    przeciez tutaj jest cały czas na ekranie wszystko (stacja pogody, temperatura , wilgotność ) a ja chce po 10 sekund w pętli wilgotnosc i temperaturę)

    Dodano po 3 [minuty]:

    Wojciech. napisał:
    No ale to nie jest ten kod.
  • Poziom 19  
    Nikt nie pomoże?
  • Poziom 36  
    [quote="chris18404"]
    adasikp napisał:
    a ja chce po 10 sekund w pętli wilgotnosc i temperaturę)



    Jeżeli nie chcesz aby salut powitalny na LCD był ciągle wyświetlany i odświerzany, - umieśc go w części programu wykonywanego jednokrotnie, tylko podczas startu i tak pozostaw, pózniej zadbasz o jego nadpisanie w odpowiednim momencie:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Stosowanie w programie opóźnień delay() większych niż kilka lub kilkadziesiąt milisekund jest z natury błędną praktyką. W tym czasie program jest zatrzymany i cały program za wyjątkiem interruptów, oraz timerów odczekuje aż to opóźnienie zostaje wypełnione.
    Do odmierzenia dłuższych odcinków czasu możesz wykorzystac fukcję millis() , która jest specyficznym dla arduino zegarem obsługiwanym przez timer0 , podobnie jak milisekundy delay(), z tą różnica że millis() nie blokuje processora, bo polega na cyklicznym odpytywaniu (polling) tego zegara i porównywaniu z wartością oczekiwaną.
    Potrzebowałbyś na początku wprowadzic dodatkową zmienną przechowującą ostatni znaczący odczyt millis(), na przykład:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    - i w każdym obrocie pętli nieskończonej ‘loop’ porównujesz róznicę: aktualnego odczytu millis, minus ostatni zapamiętany odczyt; do zadanego przedziału . Jezeli ta funkcja warunkowa jest spełniona znaczy że zadany czas upłynął i wywołujesz przygotowaną funkcję nadpisu treści LCD (w tym akurat aspekcie), może to byc zupełnie dowolna funkcja oczekująca upływu czasu. W tej funkcji jednocześnie umieszczasz nową wartośc ostatniego odczytu/(update).
    Tu praktycznie nie ma limitu co do długości zadanego przedziału czasu do odmierzenia, gdyż zawsze operujesz tylko różnicą wartości zmiennych.
    W pętli głównej powinien pojawic się warunek porównania tych zmiennych i wywołania funkcji wyświetlania:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    To wszystko co potrzebujesz.

    e marcus