Hello,
I have arduino Uno, LCD display and senzor DS18B20 on board with RLC and transistor element. I need read Adress senzors and print on LCD.
To list the addresses you need to adjust the time for the transfer, I triedsensors.setCheckForConversion(false);
but dosnt work. When connecting ordinary sensor reading works.
#include <OneWire.h> // Knihovny
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
#define ONE_WIRE_BUS 8
#define DS18B20 8
OneWire ourWire(DS18B20);
DallasTemperature sensors(&ourWire);
OneWire ds(8); // Přiřazení PINu DS18B(S)20
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); // Vytvoření objektu LCD
int backLight = 13; // PIN na osvětlení dipleje
//OneWire oneWire(ONE_WIRE_BUS);
//DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
Serial.println("CLEARDATA");
Serial.println("LABEL,Adress");
}
void loop(void)
{
// Serial.println(" ");
Serial.println(" ");
Serial.println("LABEL,Adress");
// Serial.println(" ");
Serial.print("DATA,TIME,");
// Serial.print("Adress: ");
// Serial.print("Data2");
lcd.begin(16, 2); // Parametry počet sloupů a řádků
lcd.clear(); // Smazání znaků na displeji
lcd.setCursor(0,0); // Nastavení kurzoru na pozici (s, ř)
getDeviceAddress(); // Získání adresy
pinMode(backLight, OUTPUT); // Osvětlení displeje
analogWrite(backLight, 128); // Osvětlení displeje
sensors.begin();
sensors.setCheckForConversion(false);
sensors.requestTemperatures();
lcd.setCursor(0,0); // Nastavení cursoru
float tempC(sensors.getTempCByIndex(0));
if (tempC == -127.00) {
lcd.clear();
lcd.home();
lcd.print("PripojCidlo");
}
else {
lcd.print(tempC);
}
lcd.setCursor(6,0);
lcd.print("C");
delay (3000);
}
void getDeviceAddress(void) {
byte i;
byte addr[8];
// sensors.begin(); // Začátek komunikace se senzorem
while(ds.search(addr)) {
if(addr[0] == 0x28) {
lcd.setCursor(9,0);
lcd.print("DS18B20"); }
else if(addr[0] == 0x10) {
lcd.setCursor(9,0);
lcd.print("DS18S20");}
lcd.setCursor(0, 1);
for( i = 0; i < 8; i++) {
if (addr[i] < 16) {
Serial.print('0');
lcd.print('0');
}
// lcd.setCursor(0, 1);
lcd.print(addr[i], HEX);
Serial.print(addr[i], HEX);
if (i < 7) {
// lcd.print(",");
lcd.leftToRight();
}
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
// lcd.setCursor(0, 1);
lcd.print("Neni hodnota");
return;
}
}
ds.reset_search();
return;
}
Need I modify library???