Schema disponibile qui: File
Il problema sussiste SOLO quando il tutto viene collegato all'alimentatore esterno.
Non viene scritto nulla nel file txt.
Il codice usato:
#include <DS3231.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include "DHT.h"
#include "U8glib.h"
File myFile;
char filename[] = "LOGGER01.txt";
DS3231 Clock;
DHT dht(2, DHT22); //DataPin D2
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0); // I2C / TWI
bool Century = false;
bool h12;
bool PM;
byte ADay, AHour, AMinute, ASecond, ABits;
bool ADy, A12h, Apm;
char buffer[20];
float h;
float t;
int count = 0;
void draw(void) {
//u8g.setFont(u8g_font_unifont);
//u8g.setFont(u8g_font_freedoomr10r);
//u8g.setFont(u8g_font_gdr12);
u8g.setFont(u8g_font_fur14);
u8g.setPrintPos(0, 15);
u8g.print("H:");
// u8g.setPrintPos(30, 10);
u8g.print(" ");
u8g.print(dht.readHumidity());
//u8g.setPrintPos(80, 10);
u8g.print(" %");
u8g.setPrintPos(0, 50);
u8g.print("T:");
//u8g.setPrintPos(30, 40);
u8g.print(" ");
u8g.print(dht.readTemperature());
//u8g.setPrintPos(80, 40);
u8g.print(" ");
u8g.write(0xB0); //write degree characher
u8g.print("C");
}
void setup() {
// assign default color value
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255, 255, 255);
}
// put your setup code here, to run once:
Wire.begin();
Serial.begin(9600);
SD.begin();
//Serial.println(buffer);
}
char *timeStamp()
{
int year = 2017;
int month = Clock.getMonth(Century);
int day = Clock.getDate();
int hour = Clock.getHour(h12, PM);
int minute = Clock.getMinute();
int second = Clock.getSecond();
sprintf(buffer, "%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second);
return buffer;
}
void loop() {
u8g.firstPage();
do {
draw();
} while ( u8g.nextPage() );
delay(2000);
count++;
if (count == 120) {
myFile = SD.open(filename, FILE_WRITE);
myFile.print(timeStamp());
myFile.print(" ");
myFile.print(dht.readHumidity());
myFile.print(" ");
myFile.println(dht.readTemperature());
// close the file:
myFile.close();
Serial.println(" done.");
count = 0;
}
}