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



Teraz jest 29 mar 2024, o 07:34


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 ]
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: 27212
Lokalizacja: Szczecin
Pomógł: 1041

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
Avatar użytkownika

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

<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

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



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 ]
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 ]
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 ]
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 ]
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 ]
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: 544
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