Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 6 kwi 2025, o 22:16


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
    Autor Wiadomość
    PostNapisane: 17 sie 2017, o 10:16 
    Offline
    Nowy

    Dołączył(a): 17 sie 2017
    Posty: 14
    Pomógł: 0

    Witam, niedawno zacząłem interesować się elektroniką (Arduino), mam za sobą kilka projektów, ale teraz chciałbym zrobić stację pogody na dotykowym wyświetlaczu tutaj jest kod:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Natknąłem się na problem, mianowicie chciałbym, żeby odświeżał się on (wyświetlacz) co 1 min próbowałem jak widać wyżej z funkcją millis, ale nie wychodziło. Może ma ktoś pomysł jak temu zaradzić? Z góry dziękuję za pomoc.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 sie 2017, o 18:06 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27366
    Lokalizacja: Szczecin
    Pomógł: 1043

    Panie no panie .... jestes od 2012r na forum i nie wiesz do czego jest dzial DYI ???

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 sie 2017, o 18:52 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    <tym razem przeniosłem>

    następnym razem umieszczony w złym dziale post usunę , a autora nagrodzę ostrzeżeniem. !!!
    może wreszcie ktoś się pochyli i zacznie się stosować do kilku zaleceń i czytać opisy działów zamiast klepać gdzie popadnie
    co popadnie ... :P

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 sie 2017, o 23:35 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 paź 2011
    Posty: 780
    Pomógł: 20

    Możliwości jest kilka :)

    Tutaj masz z grubsza opisane

    https://playground.arduino.cc/Code/SimpleTimer

    możesz też użyć tego

    https://github.com/sstaub/Ticker

    Albo co na tym forum bardziej wskazane ;) napisać obsługę timera są tu człowieki które pomogą :)

    Ale wybór należy do Ciebie

    Pozdrawiam

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 sie 2017, o 08:13 
    Offline
    Nowy

    Dołączył(a): 17 sie 2017
    Posty: 14
    Pomógł: 0

    Ale obsługa tmiera została już napisana z funkcją mills wcześniej w tym kodzie na samym początku



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 sie 2017, o 09:57 
    Offline
    Użytkownik

    Dołączył(a): 07 cze 2016
    Posty: 563
    Pomógł: 143

    Kuba323 napisał(a):
    Natknąłem się na problem, mianowicie chciałbym, żeby odświeżał się on (wyświetlacz) co 1 min próbowałem jak widać wyżej z funkcją millis, ale nie wychodziło.

    Co konkretnie w tym przypadku oznacza "nie wychodziło"?

    Po pierwsze zmienną interwal masz zainicjowaną wartością 5000[ms], więc to nie jest minuta, no ale zakładam, że to dla testów.

    Po drugie (co bardziej istotne) wszystkie trzy zmienne: currentMillis, previousMillis, interval powinny być zadeklarowane jako unsigned long, bo w tym akurat przypadku słowo kluczowe unsigned jest bardzo kluczowe :) chociaż z drugiej strony ten błąd powinien spowodować problemy raczej dopiero po dłuższym czasie działania urządzenia.

    Po trzecie, nie wiem z jakiej biblioteki obsługi zegara korzystasz, ale jak chcesz odświeżać co minutę, a masz do dyspozycji zegar, to nie lepiej skorzystać z jakiejś funkcji w stylu getSeconds() i wyświetlać, gdy funkcja zwróci zero? Będziesz miał przy okazji zsynchronizowane wyświetlanie z zegarem (tak to może się rozjechać z biegiem czasu, bo to są zdaje się różne źródła taktowania).



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 sie 2017, o 16:46 
    Offline
    Nowy

    Dołączył(a): 17 sie 2017
    Posty: 14
    Pomógł: 0

    Z tym, że mi coś nie wychodziło to chodziło o to, że ekran wyświetlał ten ekran startowy, a po chwili zaczynał się świecić na biało i tak było praktycznie za każdym razem kiedy próbowałem coś zrobić za pomocą millis. Tak jest i teraz kiedy dodałem te unsignet.
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    A biblioteka, której używam to ds3231 Jarzębskiego i nie mogę się doszukać takich funkcji jak get second itp.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 sie 2017, o 19:58 
    Offline
    Użytkownik

    Dołączył(a): 07 cze 2016
    Posty: 563
    Pomógł: 143

    Kuba323 napisał(a):
    Z tym, że mi coś nie wychodziło to chodziło o to, że ekran wyświetlał ten ekran startowy, a po chwili zaczynał się świecić na biało i tak było praktycznie za każdym razem kiedy próbowałem coś zrobić za pomocą millis.

    Po chwili czyli po jakim czasie? Próbowałeś to zrobić inaczej niż za pomocą millis, np. za pomocą funkcji delay()? Czy wtedy działało? Działo się tak niezależnie od tego, czy panel był dotykany?

    Musisz dokładniej opisywać swój problem, bo trudno zgadywać, jakie masz objawy złego działania programu. Poza tym mógłbyś uporządkować kod. Głównie chodzi o odpowiednie wcięcia tekstu i usunięcie niepotrzebnych linii odstępu, bo bardzo źle się to analizuje.

    Ja bym tu raczej w tej chwili tego fragmentu kodu z funkcją millis() nie winił. Może problem leży w funkcji ekranstartowy(), albo w funkcji dotyk(), albo w którejś z bibliotek. Jeśli chodzi o biblioteki, to niestety nie pomogę, bo nie znam za bardzo Arduino, może ktoś inny się wypowie.

    Ja zauważyłem jeszcze na przykład, że masz źle wpisany nawias klamrowy zamykający blok warunkowy if (p.z > MINPRESSURE && p.z < MAXPRESSURE) wewnątrz funkcji dotyk(). Powinno być:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    a jak jest? Być może sam byś zauważył błąd, gdyby kod był sformatowany prawidłowo.

    Kuba323 napisał(a):
    A biblioteka, której używam to ds3231 Jarzębskiego i nie mogę się doszukać takich funkcji jak get second itp.

    No funkcji może nie ma, ale na pewno masz sekundy w strukturze RTCDateTime dt;, którą przecież uaktualniasz co obieg pętli głównej programu instrukcją dt = clock.getDateTime();, więc dt.second zawiera zawsze aktualną ilość sekund, i można to wykorzystać do stworzenia warunku, ale to nie w tej chwili.

    Na razie proponowałbym ograniczyć problem. Spróbuj może na razie we funkcji loop() dać tylko:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    jeśli zadziała dodaj na początku dt = clock.getDateTime();
    jeśli zadziała dodaj dotyk();
    i daj znać, jakie efekty

    Może w ten sposób uda się ograniczyć, która funkcja sprawia problem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 sie 2017, o 08:51 
    Offline
    Nowy

    Dołączył(a): 17 sie 2017
    Posty: 14
    Pomógł: 0

    Dziękuję za duże zainteresowanie tematem. Idąc za pańską radą dodawałem po kolei funkcje dt = clock.getDateTime();, dotyk i rzeczywiście kiedy był sam ekranstartowy albo ekranstartowy i dt = clock.getDateTime(); to się odświeżało poprawnie, natomiast kiedy dodałem dotyk wyświetliło "powitanie" i po 1 sek. zaczął się świecić na biało.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 sie 2017, o 14:00 
    Offline
    Użytkownik

    Dołączył(a): 07 cze 2016
    Posty: 563
    Pomógł: 143

    Kuba323 napisał(a):
    natomiast kiedy dodałem dotyk wyświetliło "powitanie" i po 1 sek. zaczął się świecić na biało.

    nadal jesteś bardzo oszczędny, jeśli chodzi o podawanie informacji.
    Funkcję dotyk poprawiłeś? Dzieje się tak mimo poprawek? Jeśli poprawiłeś, a mimo tego dzieje się tak, jak opisałeś (pomimo tego, że nie dotykasz panelu), to możesz mieć źle skonfigurowany touchscreen (chodzi mi tu o linijkę TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);) lub jakiś problem z biblioteką.

    Jak się teraz dokładniej przyjrzałem Twojej funkcji dotyk(), to widzę więcej błędów, nie jest to tylko kwestia nawiasów. Sprawdziłbym, jednak najpierw funkcje drawtemp() oraz drawpg(). W tym celu daj w funkcji loop():
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    sprawdź, później zmień drawtemp(); na drawpg();, sprawdź i podaj rezultaty prób.

    Oczekiwałbym też z Twojej strony trochę więcej inicjatywy i dokładniejszych opisów. Łatwiej mi będzie pomagać, jak nie będę musiał ciągnąć Cię za język :)

    EDIT:
    Jeszcze się zmobilizowałem i zajrzałem do tych bibliotek Arduino. Teraz chyba dopiero wpadłem na to, jaki błąd jest przyczyną tych objawów, o których piszesz. Spróbuj jeszcze zmienić funkcję dotyk() na:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 sie 2017, o 18:07 
    Offline
    Nowy

    Dołączył(a): 17 sie 2017
    Posty: 14
    Pomógł: 0

    Bardzo dziękuję za pomoc wszystko działa tak jak należy dziękuję również za głębsze zainteresowanie tematem, być może faktycznie byłem trochę leniwy :p, ale to dlatego że siedziałem już chwilę nad tą funkcją. Problem rzeczywiście leżał w funkcji dotyku zrobiłem jak pan napisał i działa, jeszcze raz dziękuję.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 wrz 2017, o 16:26 
    Offline
    Nowy

    Dołączył(a): 17 sie 2017
    Posty: 14
    Pomógł: 0

    Witam ponownie
    Chciałbym powrócić do tematu, ale tym razem do bezprzewodowego przesyłania danych mianowicie do przesyłania temperatury i wilgotności używam HC-12.
    Problem polega na tym, że kiedy przesyłam dane do Serial monitora to wszystko jest ok, ale kiedy już do wyświetlacza to zaczyna się dziać coś takiego:
    https://www.youtube.com/watch?v=3O6WtcE2Wlk
    Kod nadajnika
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Kod odbiornika
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Jeśli ktoś miał już styczność z czymś takim lub może pomóc to bardzo bym prosił o podpowiedź żebym mógł rozwiązać ten problem



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 wrz 2017, o 17:12 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 548
    Pomógł: 27

    Prawdo podobnie masz problem z wyświetlaczem pod spodem jest przylutowana taśma wyświetlacza sprawdź czy tam jest ok miałem podobny problem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 wrz 2017, o 09:29 
    Offline
    Nowy

    Dołączył(a): 17 sie 2017
    Posty: 14
    Pomógł: 0

    Nie jest to problem z wyświetlaczem, ponieważ bez nadajników sam wyświetlacz z panelem dotykowym działa normalnie, dopiero kiedy wpisuję funkcję odbioru danych dzieje się tak jak na filmiku.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO