Close

DS18B20 – LCD, vypsani adresy

Úvodní stránka Fórum Hardware Senzory DS18B20 – LCD, vypsani adresy

Aktuálně je na stránce zobrazeno 5 příspěvků - 1. až 5. (celkem z 5)
  • Autor
    Příspěvky
  • #9131
    Kaniiisek
    Účastník

    Zdravím, jsem programátor začátečník. Mám připojený displej 16×2 k ARD Uno a senzor DS18B20 … potřeboval bych aby mi program vypsal na displej adresu čidla, nevíte někdo kód? Moje pokusy byly zatím bezúspěšné, umím pouze vypsat na sériovou linku…ale na displej mi to nejde. Díky za pomoc.

    #9132
    Vojtěch Vosáhlo
    Účastník

    Dobrý den,
    zkoušel jste již na lcd vypisovat zvlášť, jen třeba hello word? Pokud ne doporučuji si pročíst třeba toto:
    https://www.arduino.cc/en/Tutorial/HelloWorld

    Hodně štěstí

    #9133
    Kaniiisek
    Účastník

    Ano zkoušel, zatím mám tohle:

    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <LiquidCrystal.h>
    
    // Data wire is plugged into port 2 on the Arduino
    #define ONE_WIRE_BUS 8
    OneWire  ds(8);
    // initialize the library with the numbers of the interface pins
    LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
    
    // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
    OneWire oneWire(ONE_WIRE_BUS);
    
    // Pass our oneWire reference to Dallas Temperature. 
    DallasTemperature sensors(&oneWire);
    
    void setup(void)
    {
      // set up the LCD's number of rows and columns: 
      lcd.begin(16, 2);
      // Print a message to the LCD.
      lcd.print("DS18B20 adress:");
      
      
      // Start up the library
      sensors.begin();
    }
    
    void getDeviceAddress(void) {
      byte i;
      byte addr[8];
    
    while(ds.search(addr)) {
       lcd.setCursor(0, 1);
     
        
        for( i = 0; i < 8; i++) {
          lcd.print("0x");
          if (addr[i] < 16) {
            lcd.print('0');
          }
          // print each byte in the address array in hex format
          lcd.print(addr[i], HEX);
          if (i < 7) {
            lcd.print(", ");
          }
        }
        // a check to make sure that what we read is correct.
        if ( OneWire::crc8( addr, 7) != addr[7]) {
            lcd.print("CRC is not valid!\n");
            return;
        }
      }
      ds.reset_search();
      return;
    }
    
    void loop(void)
    { 
    
    }
      /*
      // call sensors.requestTemperatures() to issue a global temperature 
      // request to all devices on the bus
      sensors.requestTemperatures(); // Send the command to get temperatures
        // set the cursor to column 0, line 1
      // (note: line 1 is the second row, since counting begins with 0):
      lcd.setCursor(0, 1);
    
      lcd.print(sensors.getTempFByIndex(0)); 
      lcd.print((char)223);
      lcd.print("F  ");
       
      lcd.print(sensors.getTempCByIndex(0));
      lcd.print((char)223); 
      lcd.print("C");
      
      delay(500);
    }
      */
    
    #9134
    Vojtěch Vosáhlo
    Účastník

    A zapojení je správné? Co to přesně dělá?

    #9135
    Kaniiisek
    Účastník

    Vypíše mi to pouze – „DS18B20 adress:“ a dál se nic neděje. Zapojení je určitě správně.

Aktuálně je na stránce zobrazeno 5 příspěvků - 1. až 5. (celkem z 5)
  • Pro reakci na toto téma se musíte přihlásit.