#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("  ");

}