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

Arduino Uno + DHT11+LCD I2C blad w programie

07 Lis 2018 00:42 828 30
  • Poziom 21  
    Witam serdecznie

    Postanowiłem napisać ten list bo mam problem z zaprogramowaniem Arduio Uno.
    Z internetu sciągnołem sketch , który trochę zmodyfikowłem bo początkowo był problem z biblioteką czujnika DHT11. Po uporaniu się z tym problemem pojawił się nowy , którego nie jestem w stanie poprawić.
    Ja chcę za pomocą Arduino Uno i czujnika DHT 11 wyświetlać na LCD 16x2 wartości temperatury i wilgotności. Do sterowania wyświetlaczem mam moduł I2C.
    Tutaj podaję mój sketch

    Kod: c
    Zaloguj się, aby zobaczyć kod



    if ((err = dht11.read(humi, temp)) == 0) W TEJ LINI JEST BŁąD



    A tak jest w dolnym okienku:



    Arduino:1.8.7 (Windows 7), Tarjeta:"Arduino/Genuino Uno"

    In file included from L:\UNO_DHT11__pomiar_temperatury_i_wilgotnosci\UNO_DHT11__pomiar_temperatury_i_wilgotnosci.ino:1:0:

    C:\Users\Jose\Documents\Arduino\libraries\DHT-sensor-library-master_nie dziala/DHT.h:32:15: error: expected unqualified-id before numeric constant

    #define DHT11 11

    ^

    L:\UNO_DHT11__pomiar_temperatury_i_wilgotnosci\UNO_DHT11__pomiar_temperatury_i_wilgotnosci.ino:9:1: note: in expansion of macro 'DHT11'

    DHT11 dht11(pin);

    ^

    L:\UNO_DHT11__pomiar_temperatury_i_wilgotnosci\UNO_DHT11__pomiar_temperatury_i_wilgotnosci.ino: In function 'void loop()':

    UNO_DHT11__pomiar_temperatury_i_wilgotnosci:33:12: error: 'dht11' was not declared in this scope

    if ((err = dht11.read(humi, temp)) == 0)

    ^

    exit status 1
    'dht11' was not declared in this scope

    Niestety moja widza w programowaniu jest nie wielka i nie moge sobie z tym problelem poradzić. Może mi ktoś napisać gdzie jest błąd.

    Pozdrawiam
  • Poziom 22  
    Jest lib który inkluduje się poprzez <DHT11.h>, w którym klasa ma nazwę DHT11, jak i inny inkludowany przez <DHT.h>, w którym klasa ma nazwę DHT a w pliku nagłówkowym istnieje makrodefinicja DHT11. Nie wiadomo, który z tych libów jest w systemie (możliwe, że oba), ale w programie jest mały miszmasz bo inkludujesz plik nagłówkowy jednej biblioteki a próbujesz korzystać z drugiej. Tak więc należy sie zdecydować na jednego z tych libów:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    albo
    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 21  
    Witam

    Powracam do tematu bo program dalej nie działa. Na Youtube obejrzałem sposoby dołączania bibliotek i troche mi się to nie zgadza.
    Na filmach są dwa sposoby dołącznia i zrobiełem tak jak tam pokazano ale program nie może jej znaleść.
    Na zdjęciach jakie dołączam nie ma w programie śladu że jest dopisana , a z filmu wynika , że powinna być.

    Tutaj widać że należy zastosować bibliotekę DHT11.h


    Arduino Uno + DHT11+LCD I2C blad w programie

    Tutaj widać , że nie ma śladu w jednej części programu

    Arduino Uno + DHT11+LCD I2C blad w programie

    I w tej też nie ma

    Arduino Uno + DHT11+LCD I2C blad w programie

    Tutaj zaś mam zdjęcie jakie biblioteki są zainstalowane

    Arduino Uno + DHT11+LCD I2C blad w programie

    I na tym jest jak wygląda błąd

    Arduino Uno + DHT11+LCD I2C blad w programie


    Tak więc jeśli dobrze rozumiem brakuje biblioteki DHT11 bo się nie dopisała do programu

    Czy tak jest ?
  • Poziom 21  
    Kod: c
    Zaloguj się, aby zobaczyć kod
    [/syntax]


    if ((err = dht11.read(humi, temp)) == 0) ta linijka jest na rożowo




    Dalej nic. Na pewno coś źle robę. Dla próby wgrałem inny sketch i ten działa:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Ten sketch pochodzi bezpośredio z programu Arduino

    Ponieważ ten działa skopiowałem te linijki aby móc wyświetlać pomiary na LCD ale nie wygląda to na tak prosto i nic na wyświetlaczu nie ma.
    #include <Wire.h>
    #include <LCD.h>
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
    // Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity

    To są z pierwszego tego nie działającego
  • Poziom 21  
    Dziekuję Ci bardzo za pomoc ale znowu coś popsułem i teraz błąd jest w innym miejscu.
    Arduino Uno + DHT11+LCD I2C blad w programie

    Po prostu za stary i za głupi na to jestem. Poczytam to co mi podałeś to może coś zrozumiem i będę dalej szukał w internecie sketch który działa.
    Bo jak widzisz ja nie jestem w stanie poprawić najprostszego błedu

    Pozdrawiam i jeszcze raz dziekuję za pomoc i czas przeznaczyłeś
  • Poziom 21  
    Witam

    W koncu doszedlem. Jak sie okazalo w foldererze DHT11 byl drugi o tej samej nazwie i dopiero w tym bylo oprogramowanie do czujnika

    Teraz musze dojsc czego na wyswietlaczu nic nie ma , tak samo por port serie ( monitor ) nic nie pokazuje
  • Poziom 32  
    Serial Ci nic nie pokazuje bo nic do niego nie wysyłasz, przynajmniej w kodzie z postu #8.

    A co do LCD, to zmień deklarację konstruktora na taką :
    Kod: c
    Zaloguj się, aby zobaczyć kod

    i sprawdź.

    Pozdr
  • Specjalista - Mikrokontrolery
    To też nie zadziała:
    wosiekpl napisał:
    double Fahrenheit(double celsius) { return ((double)(9 / 5) * celsius) + 32; }


    a dokładnie to zadziała tak, że jako wynik w stopniach Farnheita zwróci wynik w st. Celsjusza + 32, bo 9/5 jest równe 1. Wystarczyłoby pomnożyć przez 1.8...
  • Poziom 21  
    Wpisałem dwie wersje i obie działają. Temperaturę mierzy dobrze bo się zgadza z termometrem zaś wilgotność już nie tak dokładnie. Mam ruski miernik wskazowkowy , który mierzy temperaturę , wilgotność i ciśnienie. I tutaj wilgotność różni się o nawet 10-15% a nawet i więcej . Nie mam innego aby sprawdzić , który z nich mierzy wartość rzeczywistą.
    Wyświetlacz nic nie pokazywał bo był źle ustawiony potencjometr kontrastu. Program zapisany nam w Arduino Uno i teraz zastanawiam czy da się go wpisać do Nano bo tych mam kilka zaś Uno tylko jeden.

    Pozdrawiam
  • Poziom 23  
    wosiekpl napisał:
    Wpisałem dwie wersje i obie działają. Temperaturę mierzy dobrze bo się zgadza z termometrem zaś wilgotność już nie tak dokładnie. Mam ruski miernik wskazowkowy , który mierzy temperaturę , wilgotność i ciśnienie. I tutaj wilgotność różni się o nawet 10-15% a nawet i więcej . Nie mam innego aby sprawdzić , który z nich mierzy wartość rzeczywistą.
    Wyświetlacz nic nie pokazywał bo był źle ustawiony potencjometr kontrastu. Program zapisany nam w Arduino Uno i teraz zastanawiam czy da się go wpisać do Nano bo tych mam kilka zaś Uno tylko jeden.

    Pozdrawiam


    DHT11 to "prostacki" czujnik którego nie powinno w ogóle być. Użyłem go tylko raz i nigdy więcej.
    Działający program z Uno bez żadnych przeróbek musi działać na Nano, warunkiem jest ustawienie odpowiedniej płytki i użycie tych samych numerów pinów.


    Co do wcześniejszych perypetii z bibliotekami to radzę robić tak:
    Ściągasz bibliotekę i dodajesz poprzez: szkic -> dołącz bibliotekę -> dodaj bibliotekę ZIP. Najpewniejszy sposób. I nie musi to być .zip z samą biblioteką, może być wszystko łącznie z przykładowymi programami.
    Później bez żadnych zmian kompilujesz aby sprawdzić czy działa. Jeśli najpierw Dodasz swoje wywody do programu to później ciężko ogarnąć o co chodzi.

    Z doświadczenia wiem że takie dziwne błędy kompilator wali przez problemy z biblioteką.
  • Poziom 23  
    wosiekpl napisał:
    I DHT 22 , moze ten wsadzic ? Wydaje sie byc dokladniejszy


    Ja tam używam BME280. Grosze droższy a bez porównania. A i Masz dodatkowo ciśnienie.
  • Poziom 21  
    Taki ? Nie mogę znaleść odpowiedniego softu gdzie jest możliwość oprócz cisnienia ( wysokości ) i temperatury pomiaru wilgotności

    Arduino Uno + DHT11+LCD I2C blad w programie

    Wracając do czujnika DHT11 to mam pytanie czy istnieje możliwość modyfikacji wyświetlania ciśnienia. Chodzi mi aby do tego co mierzy czujnik dolożyć 10-12 % bo widzę że zaniża pomiary.
    Kiedy znajdę odpowiedni soft do BMP280 to wtedy będę mógł porównać wszyskie pomiary tzn z DHT11 , BMP280 i ruskiego

    Dodano po 6 [godziny] 21 [minuty]:

    Wpisałem dwie wersje i obie działają. Temperaturę mierzy dobrze bo się zgadza z termometrem zaś wilgotność już nie tak dokładnie. Mam ruski miernik wskazowkowy , który mierzy temperaturę , wilgotność i ciśnienie. I tutaj wilgotność różni się o nawet 10-15% a nawet i więcej . Nie mam innego aby sprawdzić , który z nich mierzy wartość rzeczywistą.
    Wyświetlacz nic nie pokazywał bo był źle ustawiony potencjometr kontrastu. Program zapisany nam w Arduino Uno i teraz zastanawiam czy da się go wpisać do Nano bo tych mam kilka zaś Uno tylko jeden.

    Pozdrawiam
  • Poziom 21  
    Witam

    No właśnie , z tym czujnikiem mam wątpliwości dlatego na tym wątku zadałem pytanie czy mierzy wilgotność.

    [url=]https://www.elektroda.pl/rtvforum/topic3517095.html[/url]

    I z odpowiedzi wynika że tak

    Na pudełku mam opis BMP 280 ale na module pisze tak
    GY-BME/P 280

    W internecie nie znalazłem konkretnego oprogramowania pod ten moduł aby oprócz temperatury i ciśnienie mierzył wilgotmość. Dla BMP280 i BME280 tak a dla tego nie
  • Poziom 22  
    Ta płytka jest uniwersalna dla obu czujników tj. BMP280 i BME280 (mają identyczne pinouty) a który konkretnie czujnik jest zamontowany powinno być zaznaczone kropą czy innym wyróżnikiem na białym polu przy literce E albo P. U Ciebie takiej kropy nie ma więc nie wiadomo. Aby zidentyfikować który czujnik tam siedzi trzeba by sobie albo zdeszyfrować oznakowanie na metalowej obudowie czujnika (schemat oznakowania jest opisany w datasheecie) albo przeczytać bajt identyfikacyjny z rejestrów czujnika.
    Jeśli, tak jak sobie nasmarowałeś na pudełku, jest to BMP280 to wilgotności, oczywiście, nie pomierzysz.
  • Poziom 21  
    No właśnie tu jest problem z roszyfrowaniem.
    Na obudowie metalowej chipu pisze 174 YP zas na pbc jest tak
    Arduino Uno + DHT11+LCD I2C blad w programie

    I dalej nie wiem czy mierzy wilgotność ale wydaje mi się że nie. Trzeba będzie kupić inny

    PS mam nadzieje że admin mnie nie opieprzy za dublowanie tematu
  • Poziom 22  
    No to bieremy dataszita BMP280: https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMP280-DS001-19.pdf przelatujem do strony 41, sekcja Markings, gdzie widzim, że "Produkt number" równy "K" identyfikuje nam BMP280, a więc się nie zgadza. To to bieremy dataszita BME280: https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS002.pdf, znów sekcja Markings i widzimy, że też się nie zgadza, bo dla tego czujnika Produkt number to "U". A więc albo źle odczytałeś symbol z obudowy (poka zdjęcie czujnika w miarę dużej rozdzielczości i bez tej folii), albo masz jeszcze inny czujnik albo diabli wiedzą co. Pozostaje jeszcze odczytanie ID z czujnika.
  • Poziom 21  
    Witam

    Tak pisze tj 174 YP na innym jest inny napis , wydaje się być odwrotnie tak jak w lustrze


    Tak to jest

    Arduino Uno + DHT11+LCD I2C blad w programie


    Gdzieś wyczytałem , żze te ktore mierzą wilgotność mają obudowę kwadratową ( orginalne ) zaś te co mają prostokątną nie


    PS wydaje mi się , że lepiej na temat czujnika porozmawiać na tym wątku bo trochę odbiegamy od tematu i admin mnie może skarcić je je


    [url=]https://www.elektroda.pl/rtvforum/topic3517095.html[/url]
  • Poziom 22  
    Kształt, rozmieszczenie padów, położenie opisu i otworu pasuje do BMP280, chociaż opis nie bardzo się zgadza z DS. Tak czy inaczej, BME280 to to na pewno nie jest (który jest kwadratowy, ma otwór w innym miejscu oraz oznakowanie 1. padu)