Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino - mini stacja meteo

Crayou 07 Mar 2016 08:06 3693 40
  • #1 07 Mar 2016 08:06
    Crayou
    Poziom 11  

    Cześć.
    Mam mały problem z pomiarem/wyświetlaniem temperatur ujemnych z wykorzystaniem czujnika DS18B20.
    Korzystam z bibliotek:
    <OneWire.h>
    <DS18B20.h>
    Ujemna temperatura jest na wyświetlaczu pokazywana jako dodatnia - tzn. jest tylko wartość a nie ma znaku +/-. Czy DS18B20 zwraca wartości ujemne? Czy brakuje mi tylko warunku np.:
    jeżeli (temperatura < 0)
    "dodaj "-" przed temperatura"

    Czy to nie tu problem. Czytam na forum o konwersjach, przeliczaniu temperatury na ujemną, ale przyznam że mało to dla mnie póki co zrozumiałe. Posty z 2011 roku, może przez 5 lat coś łatwiejszego się pojawiło?
    Będę wdzięczny za podpowiedzi.

  • #2 07 Mar 2016 08:26
    andrzej55
    Poziom 34  

    Witaj!
    Jeśli zadeklarowałeś typ zmiennej temperatury obsługujący liczby ujemne(float, int), to powinno zwracać liczby z minusem. Łatwo możesz sprawdzić serial monitorem. Inna sprawą jest typ wyświetlacza i biblioteka do jego obsługi.

  • #4 07 Mar 2016 08:35
    Crayou
    Poziom 11  

    Temperatura jest jako float.
    Wyświetlacz 2x16 przez I2C z biblioteką <LiquidCrystal_I2C.h>

    Dziś faktycznie przetrzepię wyniki w serial monitorze.

  • #5 07 Mar 2016 08:49
    dondu
    Moderator Mikrokontrolery Projektowanie

    Crayou napisał:
    Czy DS18B20 zwraca wartości ujemne?

    Zanim zadasz takie pytanie sprawdź dokumentację:

    Cytat:
    Measures Temperatures from -55°C to +125°C (-67°F to +257°F)


    Crayou napisał:
    Korzystam z bibliotek:
    <OneWire.h>
    <DS18B20.h>

    Jak mamy sprawdzić ich poprawność skoro ich nie załączasz? Bibliotek o tej nazwie do obsługi DS18B20 jest wiele.

    Crayou napisał:
    Czytam na forum o konwersjach, przeliczaniu temperatury na ujemną, ale przyznam że mało to dla mnie póki co zrozumiałe.

    Wszystko masz w dokumentacji lub linku załączonego przez kol. Rysiek2. Co jest dla Ciebie niezrozumiałe?

  • #6 07 Mar 2016 08:50
    BlueDraco
    Specjalista - Mikrokontrolery

    Temat pojawia się tu co miesiąc, rozwiązania też.

  • #7 07 Mar 2016 09:02
    Crayou
    Poziom 11  

    dondu napisał:
    Czy DS18B20 zwraca wartości ujemne?

    Zanim zadasz takie pytanie sprawdź dokumentację:

    Źle mnie zrozumiałeś. Wiem jaki jest zakres pomiaru - nie wiem w jakim formacie są dane lub nie wiem jak sobie z nimi poradzić.

    dondu napisał:
    Bibliotek o tej nazwie do obsługi DS18B20 jest wiele.

    Znam jedną, więc nie widziałem potrzeby.

    dondu napisał:
    Co jest dla Ciebie niezrozumiałe?

    Dłubię w Arduino bardzo krótko, jakby zebrał łączny czas to parę dni, więc większość tego tekstu jest dla mnie niezrozumiała (póki co).

  • #8 07 Mar 2016 09:27
    dondu
    Moderator Mikrokontrolery Projektowanie

    Crayou napisał:
    Źle mnie zrozumiałeś. Wiem jaki jest zakres pomiaru - nie wiem w jakim formacie są dane.

    Zadawaj więc właściwe pytania, a nie pytanie, czy mierzy temperatury ujemne. Elektronika i informatyka to dziedziny ścisłe ... nawet bardzo :D
    Format także jest opisany w dokumentacji.

    Crayou napisał:
    Znam jedną, więc nie widziałem potrzeby.

    Czyli stan jest taki:
    Masz problem i wiesz, z którą biblioteką. My natomiast wiemy że masz problem z jakąś biblioteką, której nie znamy, a której nie załączasz.
    W dodatku nie załączasz własnego programu korzystającego z tej (być może prawidłowo napisanej) biblioteki.

    Crayou napisał:
    Dłubię w Arduino bardzo krótko, jakby zebrał łączny czas to parę dni, więc większość tego tekstu jest dla mnie niezrozumiała.

    OK, to może wziąłeś na początek za trudne zadanie?

    Reasumując, aby dostać od lekarza diagnozę problemu, najpierw powinieneś dostarczyć pacjenta do zbadania .

  • #9 07 Mar 2016 09:38
    Crayou
    Poziom 11  

    dondu napisał:
    My natomiast wiemy że masz problem z jakąś biblioteką, której nie znamy, a której nie załączasz.

    Chętnie załączę jak będę miał dostęp - póki co poza domem.

    dondu napisał:
    W dodatku nie załączasz własnego programu

    Trochę siara, bo to taki ulep i z Waszym pojęciem o temacie będzie mi wstyd po prostu... No ale jak trzeba...

    dondu napisał:
    OK, to może wziąłeś na początek za trudne zadanie?

    Poczytałem książkę Simona Monka - podstawy znam (mniej lub więcej). Widzę jednak, że trzeba w tym głęboko siedzieć, żeby własnoręcznie stworzyć coś samemu, bo ilekroć chcę podejrzeć czyjś kod, to pojawiają się tam takie rzeczy, których "moja" książka nie widziała.
    Jako laik w temacie bazuję bardziej na zapożyczonych rozwiązaniach i wiem, że nie zawsze się to sprawdza. Nie mniej jednak bardzo mnie cieszy jak moje poskładane puzzle coś robią albo robią nawet to co chciałem :|

  • #10 07 Mar 2016 09:40
    dondu
    Moderator Mikrokontrolery Projektowanie

    Crayou napisał:
    Trochę siara, bo to taki ulep i z Waszym pojęciem o temacie będzie mi wstyd po prostu...

    Żaden wstyd - napisałeś, że dopiero kilka dni się tym zajmujesz - każdy kiedyś zaczynał :)
    Ja Arduino nie znam, ale jak załączysz materiały, to koledzy arduinowcy na pewno pomogą.

  • #11 07 Mar 2016 09:47
    Crayou
    Poziom 11  

    No to po południu robię flaszkę dla odwagi i wklejam kod :oops:

  • #13 07 Mar 2016 10:34
    Crayou
    Poziom 11  

    Zasadniczo na tym się wzorowałem - przeczytane w pierwszej kolejności.

  • #14 07 Mar 2016 17:12
    Crayou
    Poziom 11  

    Ehhh Koledzy... Wygląda na to że dałem ciała po całości :| I to i tak delikatnie się wyraziłem...
    Wstaję rano - patrzę na LCD: 1.5 stopnia. Idę do kuchni, patrzę na LIDLowy termometr: -1.0 stopnia. Więc pierwsze co pomyślałem, że mój układ nie wyświetla minusa. I w tej panice pobiegłem do Was.
    Popołudniowa kawa, testy... No minusik jak się patrzy (sketch uproszczony):

    Link

    Wracam więc do mojego sketcha i też jest OK - DS18B20 w zamrażarce i daje wartości poprawne :roll: Docelowo tak to wygląda:

    Link

    Przy okazji stwierdzenia minusa pojawiła się mała niedogodność. Poniżej 10 stopni w minusie, zanikają liczby po przecinku ale pewnie "minus" dodawany jest w zdefiniowanym przeze mnie miejscu na LCD, potem jest liczba i znak 'C i pewnie wynik po przecinku "chowa" mi się pod 'C, bo z przody przybył nieszczęsny minusik.
    To samo dzieje się z temp. minimalną - chyba że to inny chochlik.

    Wrzucę obiecany kod - tylko jak juz będziecie bić, to nie po nerkach...

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dodałem na szybko opisy, żeby było Wam choć troszkę łatwiej odnaleźć się na moim podwórku.
    Brak mi pomysłu na resetowanie temperatury minimalnej - fajnie by było gdyby co wieczór zaczynał rejestrować na nowo.
    W przyszłości też chcę zapisywać temperaturę maksymalną (analogicznie) i też nie wiem jakim warunkiem to resetować.

    Sorki za zadymę :oops:

  • #15 07 Mar 2016 17:36
    zster

    Poziom 11  

    Gdy wyświetlasz temperaturę, ustawiaj kursor tylko raz, np :

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Wtedy niezależnie od tego, ile cyfr się wyświetla, ze znakiem czy bez, wyświetlacz wyświetli całość poprawnie. Po prostu będzie się wszystko przesuwało w prawo, od współrzędnej ustawionej przez lcd.setCursor() ;

    Do resetowania zmiennej o której mówisz, wykorzystaj funkcję millis() ;
    Zobacz w Arduino IDE na przykład "Blink without delay". Zadeklaruj zmienną typu unsigned int , np. unsigned int licznik_czasu;
    Zmodyfikuj przykład tak, by zamiast zmieniać stan diody na przeciwny, co sekundę zwiększać stan zmiennej licznik_czasu o jeden .
    Po upływie 24 godzin, czyli gdy licznik doliczy do 86400 , resetuj swoją zmienną oraz zmienną licznik_czasu.
    Jest jednak pewne ale - licznik bedzie zliczać sekundy od momentu włączenia arduino lub od momentu resetu licznika. Czyli musiał byś włączyć arduino wtedy, kiedy za 24 godziny chcesz resetować zmienną. Jeśli w ciągu dnia zresetujesz arduino, to licznik bedzie odliczał 24 godziny od tego momentu.
    Pewniejszym sposobem było by wykorzystanie jakiegoś ukladu zegara RTC ( np. DS1307)

    Staraj się też wyrzucić funckje delay() i zastąpić je choćby metodami opisanymi w przykładach Arduino "Blink without delay" .

  • #16 07 Mar 2016 17:53
    Crayou
    Poziom 11  

    zster napisał:
    Gdy wyświetlasz temperaturę, ustawiaj kursor tylko raz, np :

    O kurde - dlaczego na to nie wpadłem... Przecież kolejny "print' będzie tam, gdzie skończył się poprzedni. A ja definiowałem miejsce wystąpienia 'C na nowo...

    zster napisał:
    wykorzystaj funkcję millis()

    Jeszcze jej nie znam - zaraz będę czytał. A czy te moje "delay" kilka razy w pętli nie "popsuje" tego czasu w millis?
    Hmmm... Ciekawe czy dam radę zastosować opóźnienie millis do przełączania ekranów. Czytam, że millis nie wpływa na wykonywanie reszty kodu i np. jasność mojego LCD mogłaby się zmieniać płynnie a nie raz na parę sekund...?

  • #17 07 Mar 2016 18:05
    zster

    Poziom 11  

    Crayou napisał:
    O kurde - dlaczego na to nie wpadłem... Przecież kolejny "print' będzie tam, gdzie skończył się poprzedni. A ja definiowałem miejsce wystąpienia 'C na nowo...


    Dokładnie tak :) Jeśli potrzebujesz przerwy, także ruchomej, to wstawiasz po prostu spację, czy dwie:
    lcd.print(" ");

    Nie musisz więc badać czy temperatura ma 1 cyfrę przed przecinkiem, czy 2.

    Druga sprawa : postaraj się nabrać nawyku używania makra do zapisu stałych znakowych ( czyli po protu tektu jaki chcesz wyświetlic ) w pamięci programu a nie w pamięci RAM. Jest to bardzo proste w Arduino :

    lcd.print(F("TEKST"));

    lub

    Serial.print(F("TEKST 2));

    Dzieki temu statyczne teksty nie zajmują cennej pamięci RAM. Przy paru tekstach i zmiennych nie ma to dużego znaczenia ale warto nabrać nawyku, gdy zacznie się robić większe projekty.

    Poczytaj o millis() bo jest bardzo przydatna :) delay() nie zakłóci jej, ale najlepiej z tego zrezygnować w całości.

    Funkcja delay(), powoduję, że większość rzeczy w mikrokontrolerze po prostu staje na określony czas. Twój kod wisi sobie po prostu w powietrzu i praktycznie nic nie robi przez 4 sekundy ( w sumie 8 ).

    millis() jest swego rodzaju licznikiem. Liczy milisekundy od momentu włączenia lub resetu płytki Arduino. Mając taki licznik, można zbudować licznik sekund ( sekunda to 1000 milisekund ).
    A wtedy można wykonywać bardzo dużo rzeczy, o różnym czasie, bez zatrzymywania kodu. Zaraz wkleję Ci prostu przykład dobrego licznika, z którego sam sporo korzystałem.

    Bazując na prostym przykładzie z Arduino IDE, pokazuje jak można wykonywać różne rzeczy o różnych czasach :

    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #18 07 Mar 2016 18:45
    Crayou
    Poziom 11  

    Znakomity przykład! Nawet w większości go rozumiem. Są dla mnie nowości typu unsigned long, unsigned int ale to raczej banalne sprawy.
    Makro F - też nie znam ale czytam że to nic nie wnosi do działania programu, po prostu tekst nie zajmuje RAMu? Na razie moje sketche są proste i nie dają Arduino wiele do roboty ale pewnie z czasem bym otarł się o problem małej ilości RAMu. Wezmę zatem radę do serca.

  • Pomocny post
    #19 07 Mar 2016 18:51
    zster

    Poziom 11  

    unsigned int, long itp - musisz poczytać o typach zmiennych stosowanych w Arduino ( i nie tylko ) . To dość istotny ale prostu temat.

    Jeśli chodzi o maktro F_ to tak, nic nie wnosi do działania programu ale zapisuje stałe tekstowe w pamięci programu zamiast w pamięci RAM . To taki dobry nawyk na przyszłość :)

  • #20 07 Mar 2016 20:21
    Crayou
    Poziom 11  

    No kurde mistrzostwo z tym millis :spoko: Tak proste a tak praktyczne.
    Tak to sobie wykombinowałem:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Działa jak marzenie. Wszędzie piszą, żeby raczej unikać delay tam gdzie to możliwe i faktycznie teraz widzę jakie tego efekty.
    Całość nabrała płynności - podświetlenie LCD zmienia się w czasie rzeczywistym a gdy wyświetlany jest ekran temperatury i temperatura ulegnie akurat zmianie, to tez to widać "od razu" a nie dopiero po przejściu pętli.
    Jeszcze ogarnę makro F i będzie chyba cacy.

    zster napisał:
    Pewniejszym sposobem było by wykorzystanie jakiegoś ukladu zegara RTC ( np. DS1307)

    Pewnie tak to się skończy. Małymi kroczkami do przodu. Tylko tu przydałyby się większe cyfr/litery na LCD, tak jak tutaj:
    http://mirley.firlej.org/node/1043
    ale na razie za krótki jestem na to...

  • #22 07 Mar 2016 20:28
    Crayou
    Poziom 11  

    Bo patrzę na Wasze dzieła, gdzie większość zawiera się w jednej linijce, jakieś tablice, bufory i dziwy. A u mnie takie przedszkole i wydawało mi się bałagan...

  • #23 07 Mar 2016 20:49
    zster

    Poziom 11  

    Crayou napisał:
    Bo patrzę na Wasze dzieła, gdzie większość zawiera się w jednej linijce, jakieś tablice, bufory i dziwy. A u mnie takie przedszkole i wydawało mi się bałagan...


    Każdy jakoś zaczynał :) Kolega radzi sobie naprawdę dobrze i myślę, że za niedługo będzie pisał juz całkiem fajne programy :)

    Ciesze się, że działa jak należy. Jednak jest tu jeszcze jeden, mały problem - czy zauważył Kolega, że wyświetlany tekst ciemnieje na moment lub zauważalnie "miga", przygasa itp? Nie chodzi tu o podświetlenie ale o sam tekst.
    Możliwe, że przy tak małej pętli zjawisko nie jest widoczne ale gdy pojawi się więcej czasochłonnych rzeczy w pętli, może być zauważalne, drażniące i obciążające niepotrzebnie pętlę. Naprowadzę Kolegę, może sam znajdzie przyczynę problemu a jeśli nie, to pomożemy ten problem zlikwidować.

    Niech Kolega spojrzy co się dzieje w warunku
    Kod: c
    Zaloguj się, aby zobaczyć kod

    oraz innych.
    Chciałbym, by kolega zastanowił się, jak długo te warunki są wykonywane a potem spojrzał na poszczególne komendy w nich i spróbował powiedzieć, która komenda mogła by spowodować miganie czy przygasanie wyświetlacza ( a raczej samego tekstu na nim ) :)

  • #24 07 Mar 2016 21:01
    Crayou
    Poziom 11  

    zster napisał:
    Kolega radzi sobie naprawdę dobrze i myślę, że za niedługo będzie pisał juz całkiem fajne programy

    Dziękuję. Brak mi jeszcze wyobraźni i nie umiem podpasować konkretnych funkcji do tego, czego aktualnie potrzebuję. Ciężko poruszać się w terenie, którego się nie zna. To moja pierwsza styczność z programowaniem jako takim.
    zster napisał:
    czy zauważył Kolega, że wyświetlany tekst ciemnieje na moment lub zauważalnie "miga", przygasa itp?

    Zauważyłem i od razu zdałem sobie sprawę z tego, co ten efekt powoduje.

    zster napisał:
    jak długo te warunki są wykonywane

    Warunek trwa 1 sekundę i w tym czasie dużo razy powtarzane jest lcd.clear

    A teraz mnie jeszcze oświeciło - skoro każdy warunek trwa sekundę, to przez pozostałe dwie sekundy (zanim nastąpi kolejny warunek) na ekranie pozostaje "martwy" poprzedni tekst i pomiar.

  • #25 07 Mar 2016 21:23
    zster

    Poziom 11  

    Bingo ! :)
    Cała pętla wykonuje się może w ciągu 5 -10 ms . Więc podczas trwania warunku, kilkadziesiąt razy zostanie wykonana także funkcja lcd.clear() . To powoduje migotanie wyświetlacza, zwłaszcza w momentach gdy program na chwilę zwalnia ( nie znam biblioteki DS18B20 ale może ona być blokująca - czyli blokuje działanie programu do czasu, gdy układ DS18B20 jest gotowy do wysłania wyniku )

    I tak, przez 2 sekundy wyświetlane dane są zamrożone. Można sobie z tym pradzić na kilka sposobów. Póki co naprowadzę trochę, co zrobić z tym lcd.clear()
    Można wprowadzić kolejną zmienną , np : int licz_clear ;
    Na początku każdego warunku badać, czy licz_clear == 0 ;
    Jeśli tak, to wykonywać lcd.clear();
    czyli
    if ( licz_clear == 0 ) lcd.clear()

    Na końcu warunku, zwiększać licz_clear o jeden , czyli : licz_clear ++;

    Spowoduje to, że lcd.clear() zostanie wykonane tylko raz, bo tylko przez jedno przejście pętli, zmienna licz_clear bedzie równa zero. Teraz trzeba gdzieś tą zmienną wyzerować, by proces mógł się powtórzyć w kolejnym warunku. Można to zrobić dodając np. kolejny warunek "badający czas"

    czyli, jeśli kolega ma zmiany ekranu gdy licznik == 3, 6 , 9 oraz 12, można zmienną licz_clear zerować, gdy licznik == 2,5,8,11
    Można to zapisać tak

    Kod: c
    Zaloguj się, aby zobaczyć kod


    To jeden ze sposobów, taki trochę "na około" ale moim zdaniem prosty do zrozumienia. Z biegiem czasu można poznawać inne sposoby.

    PS - znak || oznacza LUB . Czyli warunek nalezy czytać :

    Przypisz zmiennej licz_clear wartośc zero gdy licznik jest równy 3, 5, 8 lub 11. Czyli w każdym z wymienionych przypadków.

    Gdy to koledze zdziała, to zniesiemy zamrożenie tekstu przez prostą zmiane warunków :)

  • #26 09 Mar 2016 18:43
    Crayou
    Poziom 11  

    Jestem znów - dzionek przerwy. Zaimplementowałem warunek na jednokrotne czyszczenie LCD oraz makro F ;)

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Wydaje mi się, że działa poprawnie :spoko: Kod nabiera słusznych rozmiarów :D

  • #27 09 Mar 2016 19:43
    zster

    Poziom 11  

    Czyli migotanie wyeliminowane? :)
    Teraz, można zmodyfikować nieco warunki odpowiedzialne za wyświetlanie kolejnych ekranów :

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Można zmienić na :

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Czyli warunek będzie spełniony jeśli licznik_1 będzie większy lub równy 3 ale mniejszy od 6. W tym czasie wszystko w tym warunku bedzie wykonywane - czyli temperatury bedą się zmieniać z szybkością konwersji w czujniku Ds18B20.
    Postąpić analogicznie z kolejnymi warunkami ekranów.

    Bardziej "elegancko" i mniej obciążające czas pętli było by badanie, czy w wyświetlanych danych ( zmiennych ) nastąpiła jakaś zmiana. Jeśli nie, nie wykonywać żadnych lcd.print , lcd.setCursor() itp. Jeśli nastąpiła, dopiero wtedy wysyłać dane na wyświetlacz.
    Oszczędza to czas pętli, gdyż teraz, kilkadziesiąt razy na sekundę wysyłane są dane do wyświetlacza czy jest to potrzebne, czy nie. Mam nadzieję, że wysławiam się w miarę zrozumiale :)
    Można to uczynić np. tak :

    dla każdej zmiennej którą chcemy wyświetlać, tworzymy jej "kopię" takiego samego typu ( deklaracje na początku listingu ):
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Natomiast w pętli loop(), badamy takie warunki :

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W ten sposób na wyświetlacz wysyłane są dane tylko, jeśli w temperaturze coś się zmieniło.

  • #28 09 Mar 2016 20:14
    Crayou
    Poziom 11  

    zster napisał:
    Czyli migotanie wyeliminowane?

    Wygląda na to, że tak. Poprzednio też ciężko było je zauważyć ale teraz obraz jest "stabilny".

    zster napisał:
    if ( licznik_1 >= 3 && licznik_1 < 6 )

    Ubiegłeś mnie - już szykowałem to rozwiązanie :)

    zster napisał:
    Mam nadzieję, że wysławiam się w miarę zrozumiale

    ...no ba ;)

    zster napisał:
    Można to uczynić np. tak :

    ...mam zadanie na kolejne "posiedzenie" przy Arduino - dziękuję.

    EDIT:
    zster napisał:
    if ( temperatura != temperatura_old ) // jeśli zmierzona temp. rózna od poprzedniej wartosci
    {
    lcd.setCursor(0,0);
    lcd.print(temperatura);
    temperatura_old = temperatura; // na końcu
    }


    A jeśli temperatura się nie zmieni? Wtedy warunek IF nie będzie spełniony i nie wyświetli mi ekranu temperatury w ogóle...?

  • #29 09 Mar 2016 21:49
    zster

    Poziom 11  

    Przy funkcji lcd.print() , wyświetlacz wyświetla ostatnio wysłane dane do momentu otrzymania nowych lub resetu wyświetlacza. Dane temperatury ( czy innych zmiennych wyświetlanych ) pozostaną więc zamrożone.
    W Twoim przypadku, cyklicznie trzeba zmieniać ekrany - więc mozna tu zastosować podobną sztukę co z czyszczeniem wyświetlacza - co 3 sekundy wysyłać jeden raz zestaw komend do wyświetlenia czegoś, a w pozostałym czasie aktualizowac TYLKO wyświetlanie zmiennych i tylko, jeśli pomiar się zmienił. W ten sposób zapewnia się szybsze wykonywanie pętli, co w przypadku bardziej rozbudowanych programów zaczyna mieć duże znaczenie i warto poznać techniki optymalizacji :)

  • #30 10 Mar 2016 18:45
    Crayou
    Poziom 11  

    A jednak LCD "miga". A dokładnie 1 raz na każdy ekran. Tylko przy wyświetlaniu pierwszego ekranu nie ma efektu mignięcia. 1,5h i nie mogę znaleźć rozwiązania :|

    Kod: c
    Zaloguj się, aby zobaczyć kod

Szybka odpowiedź lub zadaj pytanie
Dziękuję Ci. Ta wiadomość oczekuje na moderatora.
 Szukaj w ofercie
Wyszukaj w ofercie 200 tys. produktów TME