Visar temperaturen på LCD med STS-21(I2C) (4 / 5 steg)
Steg 4: programmering
#include
#include LiquidCrystal lcd (6, 7, 5, 4, 3, 2);
void setup()
{
Ange den LCD antal kolumner och rader
LCD.BEGIN (16, 2);
I2C adressen till STS21
#define TMP_ADDR 0x4A
Gå med I2c bussen som master
Wire.BEGIN();
Starta seriell kommunikation
Serial.BEGIN(9600);
Börja överföringen
Wire.beginTransmission(TMP_ADDR);
Välj ingen håll master
Wire.write(0xF3);
Slutet överföring och release I2C bussen
Wire.endTransmission();
}
void loop()
{
Börja överföringen
Wire.beginTransmission(TMP_ADDR);
Välj Data register
Wire.write(TMP_ADDR);
Slutet överföring och release I2C bussen
Delay(500);
Begära 2 byte, Msb först
Wire.requestFrom (TMP_ADDR, 2);
Läs två byte
While(Wire.available())
{
int msb = Wire.read();
int lsb = Wire.read();
Wire.endTransmission();
Datakonvertering i raw värden
int rawtmp = msb << 8 |lsb;
int värde = rawtmp & 0xFFFC;
dubbel ans =-46.85 + (175.72 * (värde / 65536.0));
Utskrifter
Serial.Print ("celsius värde:");
Serial.println(ans);
lcd.setCursor (0, 0);
LCD.Print ("celsius värde:");
lcd.setCursor(0,1);
LCD.Print(ans,10);
Delay(1000);
} }