LCD und SD-Karte gleichzeitig

Liebe Arduino-Gemeinde,
ich möchte mein erstes Arduino-Projekt realisieren.
Es soll ein Temperatur-Datenlogger werden. Bei Schaltung und Software habe ich mich eng an die Vorlage gehalten. Einzeln funktioniert das auch wunderbar.
Es klappt nur nicht, wenn die Daten geloggt und gleichzeitig auf dem Display ausgegeben werden sollen.
Woran könnte das liegen?

TemDataLog.ino (1.56 KB)

TurboTobi:
Liebe Arduino-Gemeinde,
ich möchte mein erstes Arduino-Projekt realisieren.
Es soll ein Temperatur-Datenlogger werden. Bei Schaltung und Software habe ich mich eng an die Vorlage gehalten. Einzeln funktioniert das auch wunderbar.
Es klappt nur nicht, wenn die Daten geloggt und gleichzeitig auf dem Display ausgegeben werden sollen.
Woran könnte das liegen?

Bitte poste deinen Sketch hier in Code-Tags (Schaltfläche </>) verwenden. Dann kann ich es im Tablet auch lesen.

Ok, am PC konnte ich die Datei öffnen.

Der Fehler ist, du verwendest für das Display und vermutlich auch den Card-Reader die selben Pins (10, 11, 12, 13).
Das solltest du für das Display ändern.

Für HotSystems:

//LM35 output voltage has a linear relation with the Celsius temperature, output of 0 v when 0 ℃, 
//every increase 1 ℃, the output voltage increase 10 mv
#define lmPin A0  //LM35 attach to
#include <LiquidCrystal.h>
#include <SD.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(4, 6, 10, 11, 12, 13);
File myTemp;

float tem = 0; 
long lmVal = 0;

void setup(){
  lcd.begin(16, 2);  // set up the LCD's number of columns and rows:
      lcd.setCursor(5,0);
      lcd.print("LM35");
  Serial.begin(9600);
  Serial.println("Initialisieren der SD-Karte");
  if (!SD.begin(10))
    {
    Serial.println("Initialisierung hat nicht geklappt!!!");
    return;
    }
  Serial.println("Initialisierung hat geklappt");
}  

void loop()
{
//Ausgabe mit LCD
  lmVal = analogRead(lmPin);
  tem = (lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100

  lcd.setCursor(0,1);
  lcd.print("Tem= ");
  lcd.setCursor(5,1);
  lcd.print(tem);
  lcd.print(" C");  
    
//Schreiben auf die SD-Karte
  myTemp = SD.open ("meintemp.csv", FILE_WRITE); //open the file
  
  if (myTemp)
    {
      myTemp.print(tem);
      Serial.print(tem);
      myTemp.print(",");
      Serial.print(",");
      myTemp.println(millis());   //write the timestamp
      Serial.println(millis());
      lcd.setCursor(0,1);

      myTemp.close();

    } 
   else
    {
      Serial.println("Fehler beim Öffnen der Datei");
    }
      
      lcd.setCursor(0,1);
      lcd.print("Tem= ");
      lcd.setCursor(5,1);
      lcd.print(tem);
      lcd.print(" C");   
 delay(10000);
  
}

Hallo TurboTobi

Die SD Karte verwendet die SPI Schnittstelle die hardwaremäßig auf den Pin 11,12 und 13 ist. Zusätzlich wird auch noch Pin 10 verwendet.

LiquidCrystal lcd(4, 6, 10, 11, 12, 13);

Benutze für das LCD-Display andere Pins. Du kannst die Pins frei unter den freien Pins wählen.

grüße Uwe

Danke Uwe. ::slight_smile:

Super, das war's. Hab vielen Dank, Uwe.