#include <Arduino.h>
#include <SPI.h>
#include <CS5532.h>
SPIClass CS5532_SPI = SPIClass(HSPI);
CS5532 Scale;
uint32_t startTime;
int32_t value;
float calibrationWeight = 20;
uint8_t averageAmount = 100;
float calFactor = 0.00213125;
int32_t zeroOffset = 2356;
void setup()
{
Serial.begin(115200);
Serial.println("Starting CS5532");
Scale.begin(CS5532_CLK, CS5532_MISO, CS5532_MOSI, CS5532_SS, CS5532_SPI);
if (!Scale.reset())
{
Serial.println("Starting CS5532 failed");
while (true) { }
}
Serial.println("CS5532 Initialized Successfully");
uint32_t tmp = Scale.getRegister(static_cast<uint8_t>(Command::ConfigRead));
Serial.print("CONFIG Register:");
Serial.println(tmp, BIN);
Scale.setRegister(static_cast<uint8_t>(Command::ConfigWrite), CS5532_UNIPOLAR);
uint32_t cmpl = Scale.calculateTwoComplement(0xFFFFFFFF);
//uint32_t cmpl = Scale.calculateTwoComplement(0x80000000);
Scale.setRegister(OffsetWriteCh1, cmpl);
Scale.setCalibrationFactor(calFactor);
Scale.setZeroOffset(zeroOffset);
Scale.setSampleRate(CS5532_SPS_6P25); // Set the sample rate to 800 Hz
Scale.setGain(CS5532_GAIN_2); // Set the gain to 64
//calibrate the sensor's offset value
//calibrate the sensor's gain value
}
void loop()
{
int32_t recData = Scale.getWeight(averageAmount);
Serial.print("Average Weight: ");
Serial.println(recData);
//Serial.print("Calibration Factor: ");
//Serial.println(Scale.getCalibrationFactor());
//Serial.print("Zero Offset: ");
//Serial.println(Scale.getZeroOffset());
delay(1000);
if (Serial.available() > 0)
{
char command = Serial.read();
if (command == 't')
{
Scale.calculateZeroOffset(averageAmount);
Serial.print("Zero Offset: ");
Serial.println(Scale.getZeroOffset());
}
else if (command == 'c')
{
float weight;
weight = Serial.parseFloat();
Scale.calculateCalibrationFactor(weight, averageAmount);
Serial.print("Calibration Factor: ");
Serial.println(Scale.getCalibrationFactor());
Serial.print("Zero Offset: ");
Serial.println(Scale.getZeroOffset());
}
}
}
#include <Arduino.h>
#include <SPI.h>
#include <CS5532.h>
SPIClass CS5532_SPI = SPIClass(HSPI);
CS5532 Scale;
uint32_t startTime;
int32_t value;
float calibrationWeight = 20;
uint8_t averageAmount = 100;
float calFactor = 0.00213125;
int32_t zeroOffset = 2356;
void setup()
{
Serial.begin(115200);
Serial.println("Starting CS5532");
Scale.begin(CS5532_CLK, CS5532_MISO, CS5532_MOSI, CS5532_SS, CS5532_SPI);
}
void loop()
{
int32_t recData = Scale.getWeight(averageAmount);
Serial.print("Average Weight: ");
Serial.println(recData);
//Serial.print("Calibration Factor: ");
//Serial.println(Scale.getCalibrationFactor());
//Serial.print("Zero Offset: ");
//Serial.println(Scale.getZeroOffset());
delay(1000);
if (Serial.available() > 0)
{
char command = Serial.read();
if (command == 't')
{
Scale.calculateZeroOffset(averageAmount);
Serial.print("Zero Offset: ");
Serial.println(Scale.getZeroOffset());
}
else if (command == 'c')
{
float weight;
weight = Serial.parseFloat();
Scale.calculateCalibrationFactor(weight, averageAmount);
Serial.print("Calibration Factor: ");
Serial.println(Scale.getCalibrationFactor());
Serial.print("Zero Offset: ");
Serial.println(Scale.getZeroOffset());
}
}
}