#include "OneWire.h"
#include "stdio.h"
#include "LCD4Bit.h"
OneWire ds(4);
LCD4Bit lcd = LCD4Bit(2);
int num = 0;
int i, j;
byte data[9];
byte addr[8];
byte addrs[2][8];
char buf[8];
char names[2][8] = {"Zunaj: ","Notri: "};
void setup(void) {
lcd.init();
while (ds.search(addr)) {
if (OneWire::crc8(addr, 7) == addr[7]) {
if (addr[0] == 0x28) {
memcpy(addrs[num],addr,8);
num++;
}
}
}
ds.reset_search();
}
void loop(void) {
lcd.cursorTo(1, 0);
for (i = 0; i < num; i++) {
ds.reset();
ds.select(addrs[i]);
ds.write(0x44);
delay(750);
ds.reset();
ds.select(addrs[i]);
ds.write(0xBE);
for (j = 0; j < 2; j++) {
data[j] = ds.read();
}
displayTemp(data,i);
lcd.cursorTo(2, 0);
}
}
void displayTemp(byte* d, int id) {
int TReading, SignBit, Tc_100, Whole, Fract;
TReading = (d[1] << 8) + d[0];
SignBit = TReading & 0x8000;
if (SignBit) {
TReading = (TReading ^ 0xffff) + 1;
}
Tc_100 = (6 * TReading) + TReading / 4;
Whole = Tc_100 / 100;
Fract = Tc_100 % 100;
lcd.printIn(names[id]);
if (SignBit) {
lcd.printIn("-");
}
itoa(Whole,buf,10);
lcd.printIn(buf);
lcd.printIn(".");
if (Fract < 10) {
lcd.printIn("0");
}
itoa(Fract,buf,10);
lcd.printIn(buf);
lcd.printIn("C");
lcd.printIn(" ");
}