Ich weiß nicht warum es auf einmal funktioniert aber das tut es jetzt

.
Ich habe den Sensor jetzt auf Pin 9 gelegt und jetzt passt es. hab vorhin aber schon einmal andere Pins benutzt und da hat es nicht geklappt. Naja egal jetzt gehts!
Danke für eure Hilfe!
hier nochmal der Code:
#include <Wire.h>
#include <RTClib.h>
#include <OneWire.h>
#include <SD.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd( A2, A1, 6, 5, 2, 3 );
const int chipSelect = 4;
OneWire ds(9); // on pin 10
RTC_DS1307 RTC;
const int hoch = 7; // Taster für Hochzählen defenieren
const int runter = 8; // Taster für Runterzählen defenierern
int l = 0;
double Wert = 1; // Wert = Fließkommazahl
void setup()
{
lcd.begin(16,2);
pinMode ( hoch, INPUT );
pinMode ( runter, INPUT );
digitalWrite ( hoch, HIGH );
digitalWrite ( runter, HIGH );
Wire.begin(); //RTC
RTC.begin(); //RTC
lcd.print("Init SD card...");
delay( 500 );
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
lcd.print("Card failed");
// don't do anything more:
return;
}
lcd.print("card init.");
lcd.clear();
lcd.print("LOG: ");
lcd.print(Wert);
lcd.print("min.");
}
void loop()
{
DateTime now = RTC.now();
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius;
if ( !ds.search(addr))
{
ds.reset_search();
delay(250);
return;
}
if (OneWire::crc8(addr, 7) != addr[7]) {
return;
}
// the first ROM byte indicates which chip
switch (addr[0]) {
case 0x10:
type_s = 1;
break;
case 0x28:
type_s = 0;
break;
default:
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end
delay(750); // maybe 750ms is enough, maybe not
// we might do a ds.depower() here, but the reset will take care of it.
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}
// convert the data to actual temperature
unsigned int raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10) {
// count remain gives full 12 bit resolution
raw = (raw & 0xFFF0) + 12 - data[6];
}
} else {
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw << 3; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
// default is 12 bit resolution, 750 ms conversion time
}
celsius = (float)raw / 16.0;
lcd.setCursor ( 0,1 );
lcd.print("Temp.: ");
lcd.print(celsius,1);
lcd.print(0xDF,BYTE); // 0xDF, BYTE geht nur für LCD
lcd.print("C");
File dataFile = SD.open("datalog.txt", FILE_WRITE);
// if the file is available, write to it:
if (dataFile) {
dataFile.println(celsius);
dataFile.close();
}
if (dataFile)
{
dataFile.close();
}
File dataFile2 = SD.open("Time.txt", FILE_WRITE); // Zeit in Datei schreiben
// if the file is available, write to it:
if (dataFile2) {
dataFile2.print(now.hour(),DEC);
dataFile2.print(".");
dataFile2.print(now.minute(),DEC);
dataFile2.print(".");
dataFile2.println(now.second(),DEC);
dataFile2.close();
}
for ( l = 0; l <= Wert * 590; l++ )
{
// Taster für Hochzählen abfragen
if ( digitalRead ( hoch ) == LOW )
{
Wert += 1.0f;
lcd.clear();
lcd.print ( "Log: " );
lcd.print ( Wert );
lcd.print ( " min." );
// Entprellung
while ( digitalRead ( hoch ) == LOW ) {}
}
// Taster für Runterzählen abfragen
if ( digitalRead ( runter ) == LOW )
{
Wert -= 1.0f; // zählt in 0,1'ner schritten hoch
lcd.clear();
lcd.print ( "Log: " );
lcd.print ( Wert );
lcd.print ( " min." );
// Entprellung
while ( digitalRead ( runter ) == LOW ) {}
}
delay ( 100 );
}
}
Gruß