Problem 2:
Die Beschreibung der SD-Karte.
Aufbau:
CS --> D8 (ist uber ein Widerstand 4,7K mit GND (Board) gebrückt (pull-down))
SCK -->D5
MOSI-->D7
MISO-->D6
VCC---> ext. Versorgung5V
GND-->ext. Versorgung 5V
Code:
#include <SPI.h>
#include <SD.h>
File myFile;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
myFile = SD.open("test.txt", FILE_WRITE);
// if the file opened okay, write to it:
if (myFile) {
Serial.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
// close the file:
myFile.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
// re-open the file for reading:
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
}
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}
void loop() {
// nothing happens after setup
}
Hallo, ich teste die Elemente erstmal einzeln. Für RTC habe ich folgender Code verwendet. Es funktioniert auch, die Zeit wird geholt. Wenn ich aber das Board von dem Rechner trenne und verbinde es wider, fängt die Zeit von vorne
#include <Wire.h>
#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"};
void setup () {
while (!Serial); // for Leonardo/Micro/Zero
Serial.begin(9600);
if (! rtc.begin()) {
Serial.println("Keine Echtzeituhr gefunden!");
while (1);
}
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void loop () {
// mit dem Befehl wird die aktuelle Uhrzeit abgefragt und in now abgelegt
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.println();
delay(3000);
}
Ich habs geahnt. @Tommy56 hat es beschrieben.
Nach dem ersten Aufspielen des Sketches, muss die Zeile vor dem nächsten aufspielen auskommentiert werden.
Sollte die Uhr danach wieder mit einer falschen Zeit starten, dann wäre eine Möglichkeit das die Batt nicht voll genug, das der Inhalt gestützt wird.
Hallo, das SD-Modul läuft über eine externe Stromquelle 5V. Wird hier dann ein Pegelwandler für die Kommunikation benötigt? Nein, die GNDs sind nicht verbunden. Verbinden??
Viel Grüße
Hallo zusammen,
ich habe beide Varianten ausprobiert 3V und 5V, und auch den GND verbunden. Laut der Beschreibung für das SD-Modul ist für 5V ausgelegt bzw. Für 3.3V nuss der Spannungsregler auf der SD-Platine überbrückt werden. Ich habe mich für den Pegelwandler entschieden. Wird nachbestellt und ausprobiert.
Das SD-Modul war bereits vorhanden, wollte es nutzen. Ich habe bereits mehrere Versuche durchgeführt, auch den Spannungsregler überbrückt. Fröhlicher Weise habe ich fest gestellt das die Datei beschrieben wurde, ich weiß aber nicht mehr bei welcher Konstellation. Alles noch einmal durchprobieren.