Having issues with the timestamp while logging data with SD using Hypnos.
I tried to reset it by taking the coin cell battery out but it still not synching with the current time.
define _dout A0 //MISO
define _sclk A1 //SCK
define _pdwn A2 //A2
define sdPin 11 // Change to 11 if using HypnosV3.3
const float startingWeight = 815.00; // Known weight to divide by in grams
int unit = 0; // Units: {0 = grams, 1 = kilograms, 2 = ounces}
char buff[] = "Start time is hh:mm:ss DDD, DD MMM YYYY";
int packet = 0; // Packet number
void do_calibration() {
long t_new_offset = 0;
long t_raw_read = 0;
float t_set_scale_value = 0;
float t_weight = 0;
// tare
t_new_offset = weight.raw_read(100); // Takes 8 measurements and averages it
weight.OFFSET = t_new_offset;
Serial.print("Calibration offset = ");Serial.println(weight.OFFSET);
Serial.println("You have 15 seconds to put a known weight on the scale");
delay(15000);
// do calibration based on a known weight
t_raw_read = weight.raw_read(3);
Serial.print("Units read = ");Serial.println(t_raw_read);
t_set_scale_value = t_raw_read / startingWeight; // divide it to a known weight
weight.SCALE = t_set_scale_value;
Serial.print("Calibration scale value = ");Serial.println(weight.SCALE);
/
// Force Calibrate
weight.OFFSET = 8521423; // Set to "Calibration offset" from calibration (8527704)
weight.SCALE = 2069.49; // Set to "Calibration Scale value" from calibration (427.06) /
void print_units() {
if (unit == 0)
Serial.println(" g");
else if (unit == 1)
Serial.println(" kg");
else if (unit == 2)
Serial.println(" oz");
else
Serial.println("Unknown unit");
}
void rtcSetup() {
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, let's set the time!");
// When time needs to be set on a new device, or after a power loss, the
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(DATE), F(TIME)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
DateTime now = rtc.now(); // Get current time
// Print current time and date
Serial.println(now.toString(buff));
}
void sdSetup() {
// Checking if SD is active
if (!SD.begin(sdPin)) {
Serial.println("initialization failed!");
return;
}
Having issues with the timestamp while logging data with SD using Hypnos. I tried to reset it by taking the coin cell battery out but it still not synching with the current time.
define _dout A0 //MISO
define _sclk A1 //SCK
define _pdwn A2 //A2
define sdPin 11 // Change to 11 if using HypnosV3.3
define alarmPin 12 // Hypnos interrupt pin
include "ADS1232.h"
include "RTClib.h"
include
ADS1232 weight = ADS1232(_pdwn, _sclk, _dout); File myFile; RTC_DS3231 rtc;
const float startingWeight = 815.00; // Known weight to divide by in grams int unit = 0; // Units: {0 = grams, 1 = kilograms, 2 = ounces} char buff[] = "Start time is hh:mm:ss DDD, DD MMM YYYY";
int packet = 0; // Packet number
void do_calibration() { long t_new_offset = 0; long t_raw_read = 0; float t_set_scale_value = 0; float t_weight = 0;
// reset to default values weight.OFFSET = 0; weight.SCALE = 1.0;
// tare t_new_offset = weight.raw_read(100); // Takes 8 measurements and averages it weight.OFFSET = t_new_offset; Serial.print("Calibration offset = ");Serial.println(weight.OFFSET); Serial.println("You have 15 seconds to put a known weight on the scale"); delay(15000);
// do calibration based on a known weight t_raw_read = weight.raw_read(3); Serial.print("Units read = ");Serial.println(t_raw_read); t_set_scale_value = t_raw_read / startingWeight; // divide it to a known weight weight.SCALE = t_set_scale_value; Serial.print("Calibration scale value = ");Serial.println(weight.SCALE);
/ // Force Calibrate weight.OFFSET = 8521423; // Set to "Calibration offset" from calibration (8527704) weight.SCALE = 2069.49; // Set to "Calibration Scale value" from calibration (427.06) /
// read weight t_weight = weight.units_read(3); Serial.print("Weight = ");Serial.println(t_weight, 5);
}
void print_units() { if (unit == 0) Serial.println(" g"); else if (unit == 1) Serial.println(" kg"); else if (unit == 2) Serial.println(" oz"); else Serial.println("Unknown unit"); }
void rtcSetup() {
if (! rtc.begin()) { Serial.println("Couldn't find RTC"); Serial.flush(); abort(); }
if (rtc.lostPower()) { Serial.println("RTC lost power, let's set the time!"); // When time needs to be set on a new device, or after a power loss, the // following line sets the RTC to the date & time this sketch was compiled rtc.adjust(DateTime(F(DATE), F(TIME))); // This line sets the RTC with an explicit date & time, for example to set // January 21, 2014 at 3am you would call: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); }
DateTime now = rtc.now(); // Get current time
// Print current time and date Serial.println(now.toString(buff));
}
void sdSetup() {
// Checking if SD is active if (!SD.begin(sdPin)) { Serial.println("initialization failed!"); return; }
Serial.println("SD initialized!"); myFile = SD.open("data.csv", FILE_WRITE);
// if the file opened okay, write to it: if (myFile) {
} else { // if the file didn't open, print an error: Serial.println("Error opening data.csv"); }
}
void sdLog() {
DateTime now = rtc.now(); // Get current time myFile = SD.open("data.csv", FILE_WRITE);
// Writes sensor values if (myFile) {
} else { // if the file didn't open, print an error Serial.println("Error opening data.csv"); } }
void setup() {
Serial.begin(9600); //while(!Serial);
// Initializing and setting pinouts pinMode(5, OUTPUT); digitalWrite(5, LOW); pinMode(6, OUTPUT); digitalWrite(6, HIGH);
pinMode(sdPin, OUTPUT);
// Setting up scale and calibrating it weight.power_up(); do_calibration();
// Setting up RTC and SD rtcSetup(); sdSetup(); }
void loop() {
packet++; DateTime now = rtc.now(); // Get current time
// Print data on serial monitor // Packet Number Serial.println("Packet: " + String(packet));
// Timestamp Serial.print("Date: "); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" Time: "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println();
// Weight Serial.println(weight.units_read(3), 5);
// Log data to SD sdLog();
delay(60000); }