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

Brak wyświetlania na LCD i2c z dht22

Backo2010 20 Kwi 2017 19:55 336 21
  • #1 20 Kwi 2017 19:55
    Backo2010
    Poziom 4  

    Witam otóż zrobiłem taki układ Lcd i2c 20x4 + dht22
    Otóż znalazłem kilka kodów na internecie i po nie wielkich poprawkach daje ,,zweryfikuj" i mi nie wyszukuje problemu ale też nic nie wyświetla. Wyświetlacz lcd i dht działa bo sprawdzałem.

    Brak wyświetlania na LCD i2c z dht22 Brak wyświetlania na LCD i2c z dht22
    Code 1 :

    Code:

    #include "DHT.h"
    #include <LiquidCrystal_I2C.h>
    #define DHTPIN 2 // what pin we're connected to

    #define DHTTYPE DHT22

    DHT dht(DHTPIN, DHTTYPE);
    LiquidCrystal_I2C lcd(0x27,20,4);

    void setup(void) {
    lcd.begin(20,4);
    lcd.print("Reading sensor");
    dht.begin();
    }

    void loop() {

    float temperature, humidity;

    humidity = dht.readHumidity();
    temperature = dht.readTemperature();
    delay(2000);

    lcd.clear();

    char tempF[6];
    char humF[6];
    dtostrf(temperature, 5, 1, tempF);
    dtostrf(humidity, 2, 0, humF);

    lcd.print("T:");
    lcd.print(tempF);
    lcd.print((char)223);
    lcd.print("C ");
    lcd.print("H: ");
    lcd.print(humF);
    lcd.print("%");
    }

    Code 2:
    Code:

    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include "DHT.h"

    #define DHTPIN 2
    #define DHTTYPE DHT22
    DHT dht(DHTPIN, DHTTYPE);
    LiquidCrystal_I2C lcd(0x27,20,4);
    void setup() {
    dht.begin();
    }
    void loop() {
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    lcd.setCursor(0,0);
    lcd.print("Humidity :");

    lcd.setCursor(13,0);
    lcd.print(h);

    lcd.setCursor(19,0);
    lcd.print("%");

    lcd.setCursor(0,2);
    lcd.print("Temperature :");

    lcd.setCursor(13,2);
    lcd.print(t);

    lcd.setCursor(19,2);
    lcd.print("C");
    }

    Code 3 :
    Code:

    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include "DHT.h"
    #define DHTPIN 2
    #define DHTTYPE DHT22
    DHT dht(DHTPIN, DHTTYPE);
    // initialize the library with the numbers of the interface pins
    LiquidCrystal_I2C lcd(0x27,20,4);
    void setup() {
    dht.begin();
    // set up the LCD's number of columns and rows:
    lcd.begin(20, 4);
    }
    void loop() {
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    lcd.setCursor(0, 0);
    lcd.print("Humidity :");
    lcd.setCursor(13, 0);
    lcd.print(h);
    lcd.setCursor(19, 0);
    lcd.print("%");
    lcd.setCursor(0, 2);
    lcd.print("Temperature :");
    lcd.setCursor(13, 2);
    lcd.print(t);
    lcd.setCursor(19, 2);
    lcd.print("C");
    }


    Prosiłbym o szybką pomoc :)

  • #2 20 Kwi 2017 20:47
    DarkMajster
    Poziom 3  

    Sprawdziłeś adres I2C wyświetlacza?

  • #3 20 Kwi 2017 21:00
    Backo2010
    Poziom 4  

    DarkMajster napisał:
    Sprawdziłeś adres I2C wyświetlacza?


    tak sprawdziłem :
    I2C Scanner
    Scanning...
    I2C device found at address 0x27 !
    done

  • #4 20 Kwi 2017 21:05
    Wojciech.
    Poziom 28  

    Backo2010 napisał:
    Wyświetlacz lcd i dht działa bo sprawdzałem.


    Mam rozumieć, że osobno moduły działają?

  • #5 20 Kwi 2017 21:06
    DarkMajster
    Poziom 3  

    to wpisz zamiast 0x30 - 0x27

  • #6 20 Kwi 2017 21:07
    Backo2010
    Poziom 4  

    Wojciech. napisał:
    Backo2010 napisał:
    Wyświetlacz lcd i dht działa bo sprawdzałem.


    Mam rozumieć, że osobno moduły działają?


    tak

  • #7 20 Kwi 2017 21:09
    Wojciech.
    Poziom 28  

    Odpal serial i wrzuć dane na serial, zobaczymy czy coś arduino wysyła.

  • #8 20 Kwi 2017 21:10
    Backo2010
    Poziom 4  

    DarkMajster napisał:
    to wpisz zamiast 0x30 - 0x27


    Zmieniłem ale nie ma różnicy. Dlatego też edytowałem

  • #9 20 Kwi 2017 21:16
    Piotrus_999
    Poziom 39  

    Stawiam na adres 2*0x27 bo nieparzystych to z ustawionym bitem kierunku. Ew 0x26

  • #10 20 Kwi 2017 21:31
    Backo2010
    Poziom 4  

    Wojciech. napisał:
    Odpal serial i wrzuć dane na serial, zobaczymy czy coś arduino wysyła.


    Code:
    void setup() {
    
      //otwarcie portu i ustawienie prędkości na 9600 bodów
      Serial.begin(9600);
      //dopóki serial monitor nie jest otwarty NIE rób nic
      while (!Serial) ;
      //wypisanie linijki tekstu
      Serial.println("Kolejno odlicz!");
    }

    int k = 0;

    void loop() {
      //wypisywanie zmiennej k w nowym wierszu.
      Serial.println(k);
      //inkrementujemy k
      k++;
      //czekamy sekundę na kolejny przebieg pętli
      delay(1000);
    }


    Nw czy dobrze zrozumiałem ale użyłem tego kodu i działa tak jak autor napisał.

  • #11 20 Kwi 2017 21:36
    Wojciech.
    Poziom 28  

    Chodziło mi tutaj, abyś wysyłał dane z DHT na serial.

  • #12 20 Kwi 2017 21:39
    Backo2010
    Poziom 4  

    Piotrus_999 napisał:
    Stawiam na adres 2*0x27 bo nieparzystych to z ustawionym bitem kierunku. Ew 0x26


    Nw nie znam się za bardzo ba arduino ale skoro na oryginalnym przykładzie(ten przykład działa bez zarzutu) ,,helloworld" jest 0x27 to czemu tu ma być inaczej ?

  • #13 20 Kwi 2017 21:48
    Piotrus_999
    Poziom 39  

    Zależy czy adres jest dawany w "czystej" postaci 7bitowej czy już przesunięte jak w lewo

  • #14 20 Kwi 2017 21:48
    Backo2010
    Poziom 4  

    Wojciech. napisał:
    Chodziło mi tutaj, abyś wysyłał dane z DHT na serial.


    DHTxx test!
    Humidity: 57.60 % Temperature: 23.10 *C
    Humidity: 57.60 % Temperature: 23.10 *C
    Humidity: 57.60 % Temperature: 23.10 *C
    (...)
    Humidity: 57.20 % Temperature: 23.20 *C
    Humidity: 57.20 % Temperature: 23.20 *C
    dht11 start condition 1 not met
    dht11 start condition 1 not met


    nw cz dht11 wyskoczyło jak nawet w kodzie jest dht22

  • #15 20 Kwi 2017 21:50
    DarkMajster
    Poziom 3  

    A kontrast nie jest przekręcony zbyt bardzo?

  • #16 20 Kwi 2017 21:54
    Backo2010
    Poziom 4  

    Piotrus_999 napisał:
    Zależy czy adres jest dawany w "czystej" postaci 7bitowej czy już przesunięte jak w lewo


    LiquidCrystal_I2C lcd(0x27,20,4); zmieniam tu na 2*0x27 później na 0x26 i dalej wyświetla tylko te kwadraty

  • #17 20 Kwi 2017 21:57
    Wojciech.
    Poziom 28  

    Sprawdź coś takiego.

    void setup() {

    digitalWrite("Test");
    dht.begin();
    }

  • #18 20 Kwi 2017 22:00
    DarkMajster
    Poziom 3  

    Możesz tak spróbować:


    Kod: c
    Zaloguj się, aby zobaczyć kod


    a do setup'a:

    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #19 20 Kwi 2017 22:03
    Wojciech.
    Poziom 28  

    tfuu nie da godzina :D

    void setup{
    //twój kod
    lcd.print("Test");
    }

  • #20 20 Kwi 2017 22:03
    DarkMajster
    Poziom 3  

    Wojciech. napisał:
    Sprawdź coś takiego.

    void setup() {

    digitalWrite("Test");
    dht.begin();
    }


    digitalWrite ustawia 0/1 na danym pinie

  • #21 20 Kwi 2017 22:06
    Wojciech.
    Poziom 28  

    DarkMajster napisał:
    Wojciech. napisał:
    Sprawdź coś takiego.

    void setup() {

    digitalWrite("Test");
    dht.begin();
    }


    digitalWrite ustawia 0/1 na danym pinie


    Człowiek zmęczony to i bzdury piszę, już poprawiłem :)

  • #22 21 Kwi 2017 12:35
    technik71
    Poziom 12  

    Przykładowy działający kod:

    Code:

    // Example testing sketch for various DHT humidity/temperature sensors
    // Written by ladyada, public domain

    #include "DHT.h"

    #define DHTPIN 2 // what digital pin we're connected to

    // Uncomment whatever type you're using!
    //#define DHTTYPE DHT11 // DHT 11
    #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
    //#define DHTTYPE DHT21 // DHT 21 (AM2301)

    // Connect pin 1 (on the left) of the sensor to +5V
    // NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
    // to 3.3V instead of 5V!
    // Connect pin 2 of the sensor to whatever your DHTPIN is
    // Connect pin 4 (on the right) of the sensor to GROUND
    // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

    // Initialize DHT sensor.
    // Note that older versions of this library took an optional third parameter to
    // tweak the timings for faster processors. This parameter is no longer needed
    // as the current DHT reading algorithm adjusts itself to work on faster procs.
    DHT dht(DHTPIN, DHTTYPE);

    void setup() {
    Serial.begin(9600);
    Serial.println("DHTxx test!");

    dht.begin();
    }

    void loop() {
    // Wait a few seconds between measurements.
    delay(2000);

    // Reading temperature or humidity takes about 250 milliseconds!
    // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
    float h = dht.readHumidity();
    // Read temperature as Celsius (the default)
    float t = dht.readTemperature();
    // Read temperature as Fahrenheit (isFahrenheit = true)
    float f = dht.readTemperature(true);

    // Check if any reads failed and exit early (to try again).
    if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
    }

    // Compute heat index in Fahrenheit (the default)
    float hif = dht.computeHeatIndex(f, h);
    // Compute heat index in Celsius (isFahreheit = false)
    float hic = dht.computeHeatIndex(t, h, false);

    Serial.print("Wilgotnosc: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperatura: ");
    Serial.print(t);
    Serial.println(" *C ");
    //Serial.print(f);
    // Serial.print(" *F\t");
    // Serial.print("Heat index: ");
    //Serial.print(hic);
    // Serial.println(" *C ");
    //Serial.print(hif);
    // Serial.println(" *F");
    }
    Kod: c
    Zaloguj się, aby zobaczyć kod

    z bibliotekami ze strony
    Sensor
    DHT
    podgląd na porcie "serial" szeregowym.
    Używając biblioteki do obsługi LCD trzeba używać danych dostarczanych przez DHT a wyświetlać "komendami" obsługującymi LCD.