Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <OneWire.h>
- #include <Wire.h>
- #include <Adafruit_MCP23017.h>
- #include <Adafruit_RGBLCDShield.h>
- #define oneWireBus 2
- byte address[8];
- byte *addrP = address;
- OneWire oneWire(oneWireBus);
- Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
- float temp;
- unsigned long lastTime = 0, currentTime = 0;
- void setup() {
- pinMode(3, OUTPUT);
- pinMode(4, OUTPUT);
- digitalWrite(3, HIGH);
- digitalWrite(4, LOW);
- lcd.begin(16, 2);
- lcd.print(F("oneWire temp ptr"));
- Serial.begin(19200);
- delay(1000);
- lcd.clear();
- oneWire.search(addrP);
- }
- void loop() {
- currentTime = micros();
- temp = getOneWireTemp(addrP);
- lastTime = micros();
- Serial.print(F("temp is: "));
- Serial.print(temp);
- Serial.print(F("C. It took "));
- Serial.print(lastTime - currentTime);
- Serial.println(F(" ms.")); //takes 9400/474
- currentTime = micros();
- temp = getOneWireTemp2();
- lastTime = micros();
- Serial.print(F("temp2 is: "));
- Serial.print(temp);
- Serial.print(F("C. It took "));
- Serial.print(lastTime - currentTime);
- Serial.println(F(" ms.")); //takes 9394/474.
- delay(500);
- }
- float getOneWireTemp(byte *str) { //get OneWire temp.
- byte data[2]; //array to store data retrieved from sensor.
- oneWire.reset();
- oneWire.select(str);
- oneWire.write(0x44, 1); //start conversion.
- oneWire.reset();
- oneWire.select(str);
- oneWire.write(0xBE); //read scratchpad.
- for (byte i = 0; i < 2; i ++) {
- data[i] = oneWire.read(); //collect data.
- } //end for.
- int16_t raw = (data[1] << 8) | data[0]; //convert raw data to C.
- return (float)raw / 16.0;
- } //end getOneWireTemp().
- float getOneWireTemp2() { //get OneWire temp.
- byte data[2]; //array to store data retrieved from sensor.
- oneWire.reset();
- oneWire.select(addrP);
- oneWire.write(0x44, 1); //start conversion.
- oneWire.reset();
- oneWire.select(addrP);
- oneWire.write(0xBE); //read scratchpad.
- for (byte i = 0; i < 2; i ++) {
- data[i] = oneWire.read(); //collect data.
- } //end for.
- int16_t raw = (data[1] << 8) | data[0]; //convert raw data to C.
- return (float)raw / 16.0;
- } //end getOneWireTemp().
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement