1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #include <Wire.h> #define SHT2x 0b1000000 #define CMD_TEMP 0b11100011 #define CMD_RH 0b11100101 void setup() { Wire.begin(); // join i2c bus (address optional for master) Serial.begin(9600); // start serial for output } void loop() { Serial.print(getRH()); // print the character Serial.println( "%" ); delay(500); Serial.print(getTempC()); Serial.println( "C" ); delay(500); } double getRH() { Wire.beginTransmission(SHT2x); Wire.write(CMD_RH); Wire.endTransmission(); Serial.println( "endTransmission" ); Wire.requestFrom(SHT2x, 2); // request 6 bytes from slave device #2 unsigned long data=0; for ( int i=0;i<2&&Wire.available();++i) // slave may send less than requested { unsigned char c = Wire.read(); // receive a byte as character data+=(unsigned long )c<<((1-i)*8); } double RH; RH=125.0*( double )data/65536-6.0; return RH; } double getTempC() { Wire.beginTransmission(SHT2x); Wire.write(CMD_TEMP); Wire.endTransmission(); Serial.println( "endTransmission" ); Wire.requestFrom(SHT2x, 2); // request 6 bytes from slave device #2 unsigned long data=0; for ( int i=0;i<2&&Wire.available();++i) // slave may send less than requested { unsigned char c = Wire.read(); // receive a byte as character data+=(unsigned long )c<<((1-i)*8); } double tempC; tempC=175.72*( double )data/65536-46.85; return tempC; } |
Arduino使用SHT2x
本文链接:https://twd2.me/archives/5483
发表评论