Alimentazione esterna Arduino

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;
  }

  

}