Temperaturövervakning med hjälp av MCP9808 och Arduino Nano (3 / 4 steg)
Steg 3: Kod för temperaturmätning:
Kan börja med arduino koden nu.
När du använder modulen sensor med arduino, inkluderar vi Wire.h bibliotek. "Wire" bibliotek innehåller funktioner som underlättar i2c kommunikationen mellan sensorn och arduino styrelsen.
Hela arduino koden ges nedan för att underlätta för användaren:
#include < Wire.h >
MCP9808 I2C adress är 0x18(24)
#define Addr 0x18
void setup()
{
Initialisera I2C kommunikation som MASTER
Wire.BEGIN();
Initialisera seriell kommunikation, ange baudvärde = 9600
Serial.BEGIN(9600);
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj konfigurationen register
Wire.write(0x01);
Kontinuerlig omvandling läge, uppstart standard
Wire.write(0x00);
Wire.write(0x00);
Stoppa I2C sändningen
Wire.endTransmission();
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj upplösning register
Wire.write(0x08);
Upplösning = +0.0625 / C
Wire.write(0x03);
Stoppa I2C sändningen
Wire.endTransmission();
}
void loop()
{
unsigned int data [2].
Börjar I2C kommunikation
Wire.beginTransmission(Addr);
Välj dataregister
Wire.write(0x05);
Stoppa I2C sändningen
Wire.endTransmission();
Begäran 2 byte data
Wire.requestFrom (Addr, 2);
Läs 2 byte data
Temp-MSB, temp-LSB
IF(Wire.available() == 2)
{
data [0] = Wire.read();
data [1] = Wire.read();
}
Konvertera data till 13-bitar
int temp = ((data [0] & 0x1F) * 256 + data[1]);
IF(temp > 4095)
{
Temp-= 8192;
}
flyta cTemp = temp * 0.0625;
flyta fTemp = cTemp * 1,8 + 32.
Utdata till skärm
Serial.Print ("temperaturen i Celsius:");
Serial.println(cTemp);
Serial.println ("C").
Serial.Print ("temperaturen i Fahrenheit:");
Serial.println(fTemp);
Serial.println "F".
Delay(500);
}
I tråd bibliotek används Wire.write() och Wire.read() för att skriva kommandon och läsa sensor utdata.
Serial.Print() och Serial.println() används för att visa utdata från sensorn på serial bildskärmen av Arduino IDE.
Produktionen av sensorn visas i bilden ovan.