How to do weigh scale zeroing (tare weight)?
You start out with a variable named Tare initialized to zero float Tare = 0.0; put in a conditional like if (millis() &gt; 2000 &amp; Tare == 0.0) Tare = voltage; and always report voltage - Tare. 

float Tare = 0;

void loop() {
  // Nothing to do unless data ready is asserted.
  if (digitalRead(ADS1262_DRDY_PIN) == HIGH) return;
  // Get a reading and convert to voltage.
  uint8_t *buffer = (uint8_t *) PC_ADS1262.ads1262_Read_Data();
  signed long reading = (uint32_t) buffer[1] &lt;&lt; 24
    | (uint32_t) buffer[2] &lt;&lt; 16
    | (uint32_t) buffer[3] &lt;&lt;  8
    | (uint32_t) buffer[4] &lt;&lt;  0;
  float voltage = VREF / (1UL&lt;&lt;31) * reading;
  if (millis() &gt; 2000 &amp; Tare == 0.0) Tare = voltage;
  // Report a smoothed-out reading.
  Serial.println(voltage-Tare, 8);
}


If you want to make it smarter, add a button for tare and maybe if you have a calibration weight, add a button for calibrating.

float scale= 1.0;
const float calib_weight = 500.0; // grams?  
...
if(tareButton | (millis() &gt; 2000 &amp; Tare == 0.0)) Tare = voltage;
if(calibrateButton) scale = calib_weight / (voltage-Tare) ; 
...
Serial.println((voltage - Tare)*scale,8); 
...