INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Hilfe bei RTC und SD
05.03.2016, 19:33
Beitrag #1
Hilfe bei RTC und SD
Hallo,

Ich habe ein Problem an dem ich schon seit 3 Tagen hänge.
Jeder Teil für sich funktioniert aber leider nicht alles zusammen.

zum Aufbau: Ultraschallsensor ; SD; RTC; Arduino Uno
Aufgabenstellung: Ultraschallsensor sollte wenn 9cm unterschritten wird mittels RTC das aktuelle Datum / Uhrzeit auf die SD Karte in eine .txt Datei schreiben!


Nun zu meinem Probelm:

Bekomme jedes mal den Error:
error opening datalog.txt

So im Anhang findet ihr meinen Code:

Code:
#include <SPI.h>
#include <SD.h>
#include <Wire.h>    // I2C-Bibliothek einbinden
#include "RTClib.h"  // RTC-Bibliothek einbinden

#define trigPin 9
#define echoPin 10

RTC_DS1307 RTC;      // RTC Modul

const int chipSelect = 4;

void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  Wire.begin();
  RTC.begin();

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

}

int handda=0 ;

void loop()
{


    // Sensorwert auslesen und Distanz berechnen

  long duration, distance;
  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;


  if ((distance < 9) && (handda==2)) {
  handda=0;// This is where the LED On/Off happens

          DateTime now = RTC.now();
          char timebuffer[16];
          sprintf(timebuffer, "%02d:%02d:%02d,", now.hour(), now.minute(), now.second());
          String dataString = "";
                 dataString += timebuffer;
          Serial.print(timebuffer);

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  
  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  
  // if the file is available, write to it:
  
  if (dataFile) {
    dataFile.println(timebuffer);
    dataFile.close();
    // print to the serial port too:
    Serial.println(timebuffer);
  }
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  }
}
if (distance > 15) {
             handda=2;
             delay(1000);
                            }  

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.03.2016, 21:02
Beitrag #2
RE: Hilfe bei RTC und SD
SD.begin (..) fehlt z.b. im setup
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.03.2016, 09:47
Beitrag #3
RE: Hilfe bei RTC und SD
(05.03.2016 21:02)Pit schrieb:  SD.begin (..) fehlt z.b. im setup

Danke für den Tipp hab es nun eingefügt.
Habe aber nochimmer das Problem das sich das Programm aufhängt
Ich bekomme nun zwar einmal das Datum Seriell ausgegeben aber dann macht das Programm nichts mehr und auf die SD wird auch noch nicht geschrieben.



Code Neu:
Code:
#include <SPI.h>
#include <SD.h>
#include <Wire.h>    // I2C-Bibliothek einbinden
#include "RTClib.h"  // RTC-Bibliothek einbinden

#define trigPin 9
#define echoPin 10

RTC_DS1307 RTC;      // RTC Modul

const int chipSelect = 4;

void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  Wire.begin();
  RTC.begin();
  SD.begin(4);


  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

}

int handda=0 ;

void loop()
{


    // Sensorwert auslesen und Distanz berechnen

  long duration, distance;
  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;


  if ((distance < 9) && (handda==2)) {
  handda=0;// This is where the LED On/Off happens

          DateTime now = RTC.now();
          char timebuffer[16];
          sprintf(timebuffer, "%02d:%02d:%02d,", now.hour(), now.minute(), now.second());
          String dataString = "";
                 dataString += timebuffer;
          Serial.print(timebuffer);

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  
  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  
  // if the file is available, write to it:
  
  if (dataFile) {
    dataFile.println(timebuffer);
    dataFile.close();
    // print to the serial port too:
    Serial.println(timebuffer);
  }
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  }
}
if (distance > 15) {
             handda=2;
             delay(1000);
                            }  

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.03.2016, 10:46 (Dieser Beitrag wurde zuletzt bearbeitet: 06.03.2016 10:47 von Bitklopfer.)
Beitrag #4
RE: Hilfe bei RTC und SD
Moin,
du kannst aber auch mal versuchen aus dem Code von meinem Megalogger dir die passenden Zeilen rauszulesen wo du für die SD Karte benötigst.
Auf der SD wird da folgendes gemacht, beim Programmstart wird eine Datei über die Variable numFile geöffnet und eine 5 stellige Zahl gelesen, diese wird um 1 erhöht und wieder zurückgeschrieben. Dann wird daraus ein neuer Filenamen generiert in dem dann die nächsten 50.000 Datensätze abgelegt werden. Dann wird die Zahl in numFile wieder erhöht usw. Das nur zum besseren Verständnis dessen was da gecodet ist.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.03.2016, 10:59
Beitrag #5
RE: Hilfe bei RTC und SD
Du solltest deinen Sketch in einzelne Funktionen aufteilen, dann ist eine Fehlersuche sehr viel einfacher.

Beispiel:
Code:
void loop() {
  US_Sensor_lesen();
  //Uhrzeit_lesen()
  //SD_Karte_schreiben();
}

void US_Sensor_lesen() {
// Hier deinen Code zum Sensor auslesen
}

void Uhrzeit_lesen() {
// Hier deinen Code zum Uhrzeit auslesen
}

void SD_Karte_schreiben() {
// Hier deinen Code zum SD-Karte auslesen
}

So kannst du nacheinander die einzelnen Funktionen prüfen, indem du die "Auskommentierung" entfernst. Aktuell würde nur der US-Sensor gelesen.

Du musst natürlich auch darauf achten, dass die notwendigen Variablen auch in den Funktionen gültig sind.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.03.2016, 11:00
Beitrag #6
RE: Hilfe bei RTC und SD
(06.03.2016 10:46)Bitklopfer schrieb:  Moin,
du kannst aber auch mal versuchen aus dem Code von meinem Megalogger dir die passenden Zeilen rauszulesen wo du für die SD Karte benötigst.
Auf der SD wird da folgendes gemacht, beim Programmstart wird eine Datei über die Variable numFile geöffnet und eine 5 stellige Zahl gelesen, diese wird um 1 erhöht und wieder zurückgeschrieben. Dann wird daraus ein neuer Filenamen generiert in dem dann die nächsten 50.000 Datensätze abgelegt werden. Dann wird die Zahl in numFile wieder erhöht usw. Das nur zum besseren Verständnis dessen was da gecodet ist.
lgbk

Danke für den Tipp aber bin ich denn mit meinem Code so falsch unterwegs.
Ich versuchs jetzt wirklich schon seit Tagen.

Der Code den ich verwendet habe kommt ja aus dem Beispiel Datalogger in der Arduino IDE und funktioniert für sich auch.
Genauso der Code fürs RTC und der Code für den Ultraschallsensor.

Es funktioniert auch in Summe bis ich den Block mit dem RTC einfüge dann klappt es nicht mehr.
Ich weiß aber nicht warum.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.03.2016, 11:04
Beitrag #7
RE: Hilfe bei RTC und SD
(06.03.2016 11:00)baron007 schrieb:  Es funktioniert auch in Summe bis ich den Block mit dem RTC einfüge dann klappt es nicht mehr.
Ich weiß aber nicht warum.

Deshalb mein Tipp, mit dem Aufteilen in Funktionen.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.03.2016, 11:08 (Dieser Beitrag wurde zuletzt bearbeitet: 06.03.2016 11:14 von Pit.)
Beitrag #8
RE: Hilfe bei RTC und SD
du solltest mal deine programmlogik überprüfen.
du machst die datei auf, schreibst was rein, und schliesst die datei.
beim 2. schreiben ist die datei dann aber zu.
erstmal kannst du statt dem close den flush verwenden.
der flush schliesst nicht die datei, sondern klatscht nur den file-buffer auf das medium.
der flush ist nicht unbedingt notwendig wenn man am ende den file korrekt schliesst.
allerdings läuft loop ewig und du hast kein ende kriterium um den file zu schliessen.
der flush sorgt dafür, dass das medium auch beschrieben ist, wenn es z.b. zu einem stromausfall kommt.

ähhhh, sorry bin blind heute morgen, du machst ja die datei schon immer wieder vorher auf, nur dann schreibt er über den alten timstamp drüber und nicht an das ende der datei.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 121 14.10.2016 21:40
Letzter Beitrag: hotsystems
Sad Ich brauche Hilfe Prosac 4 233 09.10.2016 18:39
Letzter Beitrag: Prosac
  at24c256 Hilfe Gandalf 6 249 29.08.2016 18:59
Letzter Beitrag: MKc
Smile Progammier Neuling Codeschloss bittet um Hilfe Donalonso 2 286 27.08.2016 18:23
Letzter Beitrag: Binatone
  Hilfe gesucht. Webserver Statsiche und Dynamische HTMl Seite b3ta 11 451 22.08.2016 08:07
Letzter Beitrag: b3ta
  Hilfe: Mega2560 - ENC 28J60 - MYSQL Gandalf 1 181 28.07.2016 16:30
Letzter Beitrag: Gandalf
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 543 06.07.2016 14:59
Letzter Beitrag: Binatone
  Hilfe beim Arduino Shield reimundko 6 458 05.06.2016 11:28
Letzter Beitrag: rpt007
  Brauche etwas Hilfe bei der Umsetzung einer Idee raspido 3 532 23.04.2016 10:26
Letzter Beitrag: rkuehle
  Hilfe bei Liniendiagram Wetteronkel 8 721 05.03.2016 17:27
Letzter Beitrag: Wetteronkel

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste