How to display temperature on Blynk? - DS18B20 + 2x16 display

How to display temperature on Blynk. The display works for me.

  #include <OneWire.h> 
    #include <Wire.h>   // standardowa biblioteka Arduino
    #include <LiquidCrystal_I2C.h> // dolaczenie pobranej biblioteki I2C dla LCD
    #define BLYNK_PRINT Serial


    #include <ESP8266WiFi.h>
    #include <BlynkSimpleEsp8266.h>
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Ustawienie adresu ukladu na 0x27
    int DS18S20_Pin = D4; //DS18S20 Signal pin on digital 2
    OneWire ds(DS18S20_Pin);  // on digital pin 2
    char auth[] = "";

    // Your WiFi credentials.
    // Set password to "" for open networks.
    char ssid[] = "TP-LINK_35031C";
    char pass[] = "";
    void setup()  
    {
      Serial.begin(9600);

      Blynk.begin(auth, ssid, pass);
      
      lcd.begin(16,2);   // Inicjalizacja LCD 2x16
      
      lcd.backlight(); // zalaczenie podwietlenia 
      lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
      lcd.print("Temperatura");


    }

    void loop(void) {
      float temperature = getTemp();
      Serial.println(temperature);
      lcd.setCursor(0, 1); 
      lcd.print(temperature);

      
      delay(1000); //just here to slow down the output so it is easier to read
      
    }


    float getTemp(){
      //returns the temperature from one DS18S20 in DEG Celsius

      byte data[12];
      byte addr[8];

      if ( !ds.search(addr)) {
          //no more sensors on chain, reset search
          ds.reset_search();

      }

      if ( OneWire::crc8( addr, 7) != addr[7]) {
          Serial.println("CRC is not valid!");

      }

      if ( addr[0] != 0x10 && addr[0] != 0x28) {
          Serial.print("Device is not recognized");
      }

      ds.reset();
      ds.select(addr);
      ds.write(0x44,1); // start conversion, with parasite power on at the end

      byte present = ds.reset();
      ds.select(addr);    
      ds.write(0xBE); // Read Scratchpad

      
      for (int i = 0; i < 9; i++) { // we need 9 bytes
        data[i] = ds.read();
      }
      
      ds.reset_search();
      
      byte MSB = data[1];
      byte LSB = data[0];

      float tempRead = ((MSB << 8) | LSB); //using two's compliment
      float TemperatureSum = tempRead / 16;
      
      return TemperatureSum;
        Blynk.run();
    }

A very quick forum search gave me THIS. Don’t be lazy and search a little on the forum or google…

1 Like

@tomixps You have been in this forum a long time… so why post unformatted code??

I fixed that for you.

Refresher course :stuck_out_tongue:

Blynk%20-%20FTFC