AMS5812-0003DB (ncd.io breakout) + Arduino Uno R4 WiFi — Sensor Returns Inconsistent or Stuck Values

I’m using the ControlEverything AMS5812 Arduino library examples for ±0.3 PSI range on an Arduino Uno R4 WiFi. I tested four different AMS5812‑0003DB I²C pressure sensors (ncd.io breakouts) with the same code, wiring, and board, but the results are all over the place.

One sensor always returns 0x3FFF (16383) for both pressure and temperature and none of the sensors give consistent results or change when I blow on them.
I’m relatively new to Arduino and would really appreciate the help. Thank you in advance!

can you share the code you are using ?
here is sample code from chatgpt

#include <Wire.h>

// I2C address of AMS5812 sensor
#define AMS5812_ADDR 0x78

void setup() {
  Wire.begin();
  Serial.begin(9600);
  delay(100);
}

void loop() {
  uint8_t data[4];

  // Request 4 bytes from the sensor
  Wire.beginTransmission(AMS5812_ADDR);
  Wire.endTransmission();
  delay(10);

  Wire.requestFrom(AMS5812_ADDR, 4);
  for (int i = 0; i < 4; i++) {
    if (Wire.available()) {
      data[i] = Wire.read();
    }
  }

  // Parse pressure (first two bytes)
  uint16_t rawPressure = ((uint16_t)data[0] << 8) | data[1];
  rawPressure &= 0x3FFF;  // mask off status bits (2 MSBs)

  // Parse temperature (last two bytes)
  uint16_t rawTemp = ((uint16_t)data[2] << 8) | data[3];
  rawTemp >>= 5;  // only 11 bits used

  // Convert raw pressure to PSI
  float pressurePSI = (rawPressure - 1638.0) * (3.0 / (14745.0 - 1638.0));

  // Convert raw temperature to Celsius
  float temperatureC = (rawTemp * 200.0 / 2047.0) - 50.0;

  // Output
  Serial.print("Pressure: ");
  Serial.print(pressurePSI, 3);
  Serial.print(" PSI\tTemp: ");
  Serial.print(temperatureC, 2);
  Serial.println(" °C");

  delay(500);
}

I am using the ams5812 0003db example code from here CE_ARDUINO_LIB/AMS5812 at master · ControlEverythingCommunity/CE_ARDUINO_LIB · GitHub

#include <Wire.h>
#include <AMS5812.h>

AMS5812 ams;
const float AMS5812_0003_D_B_P_MIN = -0.3;      // minimum pressure, PSI
const float AMS5812_0003_D_B_P_MAX = 0.3;       // maximum pressure, PSI
const float AMS5812_0003_D_B_T_MIN = -25.0;     // minimum temperature, C
const float AMS5812_0003_D_B_T_MAX = 85.0;      // maximum temperature, C

void setup(void)
{
    Serial.begin(9600);

    // The address can be changed making the option of connecting multiple devices
    ams.getAddr_AMS5812(AMS5812_DEFAULT_ADDRESS);   // 0x78

    ams.begin();
    delay(500);
}

void loop(void)
{
    byte error;
    int8_t address;

    address = ams.ams_i2cAddress;
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0)
    {
        ams.Measure_PressureAndTemperature(AMS5812_0003_D_B_P_MIN, AMS5812_0003_D_B_P_MAX, AMS5812_0003_D_B_T_MIN, AMS5812_0003_D_B_T_MAX);
        float cTemp, fTemp, pressure, mbar, kPa, hg;

        Serial.println("Getting Readings from AMS5812_0003-D-B");
        Serial.println(" ");
        // Read and print out the Pressure, convert it to PSI, mbar, kPa, mmHg
        pressure = ams.getPressure();
        mbar = pressure * 68.9476;
        kPa = pressure / 10;
        hg = pressure * 76.0 / 101.325;

        // Read and print out the temperature, then convert to C and F scales
        cTemp = ams.getTemperature();
        fTemp = cTemp * 1.8 + 32;

        // Output data to screen
        Serial.print("Digital Pressure Reading: ");
        Serial.print(pressure);
        Serial.println(" PSI");
        Serial.print("Digital Pressure Reading: ");
        Serial.print(mbar);
        Serial.println(" mbar");
        Serial.print("Digital Pressure Reading: ");
        Serial.print(kPa);
        Serial.println(" kPa");
        Serial.print("Digital Pressure Reading: ");
        Serial.print(hg);
        Serial.println(" mmHg");
        Serial.print("Temperature Reading in Celsius: ");
        Serial.print(cTemp);
        Serial.println(" °C");
        Serial.print("Temperature Reading in Fahrenheit: ");
        Serial.print(fTemp);
        Serial.println(" °F");
        Serial.println(" ");
        Serial.println("        ***************************        ");
        Serial.println(" ");
    }
    else
    {
        Serial.println("AMS5812_0003-D-B Disconnected!");
        Serial.println(" ");
        Serial.println("        ************        ");
        Serial.println(" ");
    }

    delay(1000);
}

|Pressure: -0.219 PSI|Temp: -50.00 °C|
|Pressure: -0.219 PSI|Temp: -50.00 °C|
|Pressure: -0.220 PSI|Temp: -50.00 °C|
|Pressure: -0.219 PSI|Temp: -50.00 °C|
|Pressure: -0.219 PSI|Temp: -50.00 °C|
|Pressure: -0.219 PSI|Temp: -50.00 °C|
|Pressure: -0.219 PSI|Temp: -50.00 °C|
|Pressure: -0.219 PSI|Temp: -50.00 °C|
|Pressure: -0.219 PSI|Temp: -50.00 °C|
|Pressure: -0.219 PSI|Temp: -50.00 °C|
|Pressure: -0.219 PSI|Temp: -50.00 °C|

This is the result of using the code you gave which hints towards there being a problem.