I wanna ask about the error occur while verifying the code, actually arduino is new for me and I hope all of you can help me for my final project thanks in advance. I'm using DS18B20 temperature sensor with lcd display
this is the code:
// LCD Thermostat
#include <OneWire.h>
#include <LiquidCrystal.h>
// Connections:
// rs (LCD pin 4) to Arduino pin 12
// rw (LCD pin 5) to Arduino pin 11
// enable (LCD pin 6) to Arduino pin 10
// LCD pin 15 to Arduino pin 13
// LCD pins d4, d5, d6, d7 to Arduino pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
int backLight = 13; // pin 13 will control the backlight
OneWire ds(8); // ds18b20 pin #2 (middle pin) to Arduino pin 8
byte i;
byte present = 0;
byte data[12];
byte addr[8];
int HighByte, LowByte, SignBit, Whole, Fract, TReading, Tc_100, FWhole;
void setup(void) {
pinMode(backLight, OUTPUT);
digitalWrite(backLight, HIGH); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.
lcd.begin(2,16); // rows, columns. use 2,16 for a 2x16 LCD, etc.
lcd.clear(); // start with a blank screen
lcd.setCursor(0,0); // set cursor to column 0, row 0
if ( !ds.search(addr)) {
lcd.clear(); lcd.print("No more addrs");
delay(1000);
ds.reset_search();
return;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
lcd.clear(); lcd.print("CRC not valid!");
delay(1000);
return;
}
}
void getTemp() {
int foo, bar;
ds.reset();
ds.select(addr);
ds.write(0x44,1);
present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for ( i = 0; i < 9; i++) {
data = ds.read();
-
}*
-
LowByte = data[0];*
-
HighByte = data[1];*
-
TReading = (HighByte << 8) + LowByte;*
-
SignBit = TReading & 0x8000; // test most sig bit*
-
if (SignBit) {*
-
TReading = -TReading;*
-
}*
Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25 -
Whole = Tc_100 / 100; // separate off the whole and fractional portions*
-
Fract = Tc_100 % 100;*
-
if (Fract > 49) {*
-
if (SignBit) {*
-
--Whole;*
-
} else {*
-
++Whole;*
-
}*
-
}*
-
if (SignBit) {*
-
bar = -1;*
-
} else {*
-
bar = 1;*
-
}*
_ foo = ((Whole * bar) * 18); // celsius to fahrenheit conversion section_
_ FWhole = (((Whole * bar) * 18) / 10) + 32;_ -
if ((foo % 10) > 4) { // round up if needed*
-
++FWhole;*
-
}*
}
void printTemp(void) { -
lcd.clear();*
-
lcd.setCursor(0,0);*
-
lcd.print("Temp is: ");*
-
lcd.setCursor(0,1); *
-
if (SignBit) { *
-
lcd.print("-");*
-
}*
-
lcd.print(Whole);*
-
lcd.print(" C / ");*
-
lcd.print(FWhole);*
-
lcd.print(" F");*
}
void loop(void) { -
getTemp();*
-
printTemp();*
-
delay(1000);*
}
Error compiling
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp:85:24: error: WConstants.h: No such file or directory
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp: In constructor 'OneWire::OneWire(uint8_t)':
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp:93: error: 'digitalPinToBitMask' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp:94: error: 'digitalPinToPort' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp:94: error: 'portInputRegister' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp: In member function 'uint8_t OneWire::reset()':
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp:127: error: 'delayMicroseconds' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp:134: error: 'delayMicroseconds' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp: In member function 'void OneWire::write_bit(uint8_t)':
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp:157: error: 'delayMicroseconds' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp:165: error: 'delayMicroseconds' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp: In member function 'uint8_t OneWire::read_bit()':
C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp:185: error: 'delayMicroseconds' was not declared in this scope