AntiGuide: Ds3231InternalTemperature



PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 216.73.216.82 :: Signaler un abus :: le: 20250723 09:55:51

Ds3231

I2cid: 11

lu: http://forum.arduino.cc/index.php?topic=262986.0

chantier: C:\Users\adminpo\Desktop\ARDUINO\arduino-1.6.7\examples\po\Ds3231InternalTemperature

bugprobable; la température ne change pas
// on nanbo, powered by D2
// from: http://forum.arduino.cc/index.php?topic=262986.0

#include <Wire.h>
#define DS3231_I2C_ADDR             0x68
#define DS3231_TEMPERATURE_ADDR     0x11

void setup()
{
   pinMode(2,OUTPUT);
   digitalWrite(2,HIGH);
  Serial.begin(115200);
Seral.println("Ds3231 internal temperature powered by pin 2);
    Wire.begin();
}
int n=0;
void loop()
{
   float tempC = DS3231_get_treg();  // Reads the temperature as an int, to save memory
   // float tempC = DS3231_get_treg();
   Serial.print (n);
   Serial.print (" " );
   n=n+1;
   Serial.println(tempC);
      delay(5000);
}

float DS3231_get_treg()
{
    Wire.beginTransmission(DS3231_I2C_ADDR);
    Wire.write(DS3231_TEMPERATURE_ADDR);
    Wire.endTransmission();

    Wire.requestFrom(DS3231_I2C_ADDR, 2);
   /*   short temp; */
  int temp; 
  temp = Wire.read() << 8;
  temp |= Wire.read();
  return(temp/256.);
/*
    int rv;  // Reads the temperature as an int, to save memory
//  float rv;
   
    uint8_t temp_msb, temp_lsb;
    int8_t nint;

    Wire.beginTransmission(DS3231_I2C_ADDR);
    Wire.write(DS3231_TEMPERATURE_ADDR);
    Wire.endTransmission();

    Wire.requestFrom(DS3231_I2C_ADDR, 2);
    temp_msb = Wire.read();
    temp_lsb = Wire.read() >> 6;

    if ((temp_msb & 0x80) != 0)
        nint = temp_msb | ~((1 << 8) - 1);      // if negative get two's complement
    else
        nint = temp_msb;

    rv = 0.25 * temp_lsb + nint;

    return rv;
    */
}