Which low power states does it support?
How do you enter this states?
I want to measure and log to a file in the flash each 15 minuttes.
Running on a battery I want to use as little energy as possible.
At the moment I am at 2.5 mA using delay in the main loop.
Code: Select all
#include <Arduino.h>
#include <Wire.h>
#include <SdFat.h>
#include <RTClib.h>
#include <Adafruit_SPIFlash.h>
#include <Adafruit_SHT31.h>
#include "flash_config.h"
Adafruit_SPIFlash flash(&flashTransport);
Adafruit_SHT31 sht31 = Adafruit_SHT31();
FatVolume fatfs;
RTC_Millis rtc;
#define FILE_NAME "Fre01.dat"
#define useSerial 0
uint8_t freId = 1; // Id number;
unsigned long loopTime = 15*60*1000; // Looptime in milliseconds
bool useTemp = true;
DateTime nowTime;
DateTime startTime;
void readWriteTempHumid() {
uint8_t temp = 110;
uint8_t humid = 120;
if (useTemp)
{
if (! sht31.begin(0x44)) {
#ifdef useSerial
Serial.println("Couldn't find SHT31");
#endif
while (1) delay(1);
}
temp = round(sht31.readTemperature());
humid = round(sht31.readHumidity());
sht31.reset();
}
#ifdef useSerial
nowTime = rtc.now();
char buf[] = "YYMMDD-hh:mm:ss";
Serial.print("Time ");
Serial.print(nowTime.toString(buf));
Serial.print(" ");
Serial.print("Temp *C = ");
Serial.print(temp);
Serial.print(" ");
Serial.print("Humid. % = ");
Serial.println(humid);
#endif
File32 dataFile = fatfs.open(FILE_NAME, FILE_WRITE);
dataFile.print(temp);
dataFile.print(",");
dataFile.println(humid);
dataFile.close();
}
void initSerial() {
#ifdef useSerial
Serial.begin(115200); // Open serial communications.
while (!Serial) {delay(10); } // wait for serial port to connect. Needed for native USB port only
Serial.println("Serial is running.");
#endif
}
void initFlash() {
flash.begin(); // Init external flash
if ( !fatfs.begin(&flash) ) { // Open file system on the flash
#ifdef useSerial
Serial.println("Error: filesystem is not existed. Please try SdFat_format example to make one.");
#endif
while(1)
{
yield();
delay(1);
}
}
#ifdef useSerial
Serial.println("Filesystem is running.");
#endif
}
void initClock() {
startTime = DateTime(F(__DATE__), F(__TIME__));
rtc.adjust(startTime);
}
void initFile() {
char buf[] = "YYMMDD-hh:mm:ss";
File32 dataFile = fatfs.open(FILE_NAME, FILE_WRITE);
dataFile.print("Id nummer : " );
dataFile.println(freId);
dataFile.print ("Start tid : ");
dataFile.println(startTime.toString(buf));
dataFile.print ("Loop tid i minutter : ");
dataFile.println(loopTime/60000);
dataFile.close();
}
void setup() {
initSerial();
initFlash();
initClock();
initFile();
}
void loop() {
readWriteTempHumid();
delay(loopTime);
}