Probleme mit TFT und DS1820 beim ArduinoMega

HI!

Ich habe Probleme meinen Arduino Mega mit 3,5" TFT-Shield (Kuman) mit 2 DS1820 zum laufen zu bringen.

Wenn ich nur das Display am laufen habe geht alles problemlos, wenn nur die Sensoren laufen habe ich auch kein Problem.
Nur wenn ich beides zusammen in einen Sketch schiebe, erkennt er die Sensoren nicht mehr und gibt es auch nicht mehr auf das TFT aus.

Ich bin etwas ratlos!
Erstens lief es gestern schon einmal, zum anderen bin ich sehr neu in der Materie sodass mir bei manchem einfach noch die Nachvollziebarkeit fehlt.
Habe bis vor kurzem alles mit BASCOM geschrieben und nie eine fertige Umgebung genutzt...

Wem was auffällt was zur Problemlösung beiträgt, immer raus damit!!!

Schonmal Tausend-Dank!!!

Hier mal mein Sketch:

#include <Adafruit_GFX.h>                                            //Core graphics library
#include <Adafruit_TFTLCD.h>                                         //Hardware-specific library
#include <OneWire.h>                                                 //http://www.arduino.cc/playground/Learning/OneWire
#include <DallasTemperature.h>                                       //http://milesburton.com/index.php?title=Dallas_Temperature_Control_Library
#include <MCUFRIEND_kbv.h>

MCUFRIEND_kbv tft;

#define ONE_WIRE_BUS 39                                              //1-Wire auf DigitalPin 10                                             
#define TEMPERATURE_PRECISION 12                                     //Präzision auf 12 Bit
#define LCD_CS A3                                                    //Chip Select goes to Analog 3
#define LCD_CD A2                                                    //Command/Data goes to Analog 2
#define LCD_WR A1                                                    //LCD Write goes to Analog 1
#define LCD_RD A0                                                    //LCD Read goes to Analog 0
#define LCD_RESET A4                                                 //Can alternately just connect to Arduino's reset pin
#define BLACK   0x0000                                               //Für Hex-Werte der Farben, "freundlichere" Bezeichnungen gewählt
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF


OneWire oneWire(ONE_WIRE_BUS);                                      //Einrichten des OneWire Bus um die Daten der Temperaturfühler abzurufen
DallasTemperature sensors(&oneWire);                                // Bindung der Sensoren an den OneWire Bus 
DeviceAddress tempDeviceAddress;                                    //Verzeichniss zum Speichern von Sensor Adressen
int numberOfDevices;                                                //Anzahl der gefundenen Sensoren


void setup(void)
{  
 Serial.begin(9600);
 Serial.println(F("TFT LCD test"));

 tft.reset();

 uint16_t identifier = tft.readID();

 if(identifier==0x9486)
 {     
      Serial.println(F("Found 0x9486 LCD driver"));
 }
 
 tft.begin(identifier);
 Serial.print("TFT size is "); Serial.print(tft.width()); Serial.print("x"); Serial.println(tft.height());


  Serial.print("Abfrage der Temperatur... ");                        //Serielle Ausgabe
  sensors.requestTemperatures();                                     //Alle Sensorwerte abfragen
  Serial.println("DONE");

  
  for(int i=0 ;i<numberOfDevices; i++)                               //Ausgabe der Daten für jeden Sensor
  {                             
     float tempC = sensors.getTempCByIndex(i);
     Serial.print("Sensor ");
     Serial.print(i, DEC);
     Serial.print(" hat grad Celsius: ");
     Serial.println(tempC);
  }
  delay(1000);
 

 tft.setRotation(3);                                                 //Bildschirm auf Breitformat stellen
 
 tft.fillScreen(BLACK);                                              //Hintergrundfarbe auf schwarz setzen
 
 unsigned long start = micros();
 
 tft.drawRect(1, 1, 479, 319, WHITE);                                //Rechteck zeichnen
 tft.drawLine(1, 40, 479, 40, WHITE);                                //Linien zeichnen
 tft.drawLine(240, 40, 240, 319, WHITE);

 tft.setCursor(70, 14);                                              //Beschriftungen inkl. Position, Textfarbe und -größe
   tft.setTextColor(0x04FF);   tft.setTextSize(2);
   tft.println("Day & Climate Control System");
 
 tft.setCursor(40, 60);
   tft.setTextColor(0x04FF);    tft.setTextSize(2);
   tft.println("Temperaturen:");
  
 tft.setCursor(290, 60);
   tft.setTextColor(0x04FF);    tft.setTextSize(2);
   tft.println("Wasserwerte:");

 tft.setCursor(10, 120);
   tft.setTextColor(0x04FF);    tft.setTextSize(2);
   tft.println("Tag");

 tft.setCursor(250, 120);
   tft.setTextColor(0x04FF);    tft.setTextSize(2);
   tft.println("PH-Wert");

 tft.setCursor(10, 220);
   tft.setTextColor(0x04FF);    tft.setTextSize(2);
   tft.println("Nacht");

 tft.setCursor(250, 220);
   tft.setTextColor(0x04FF);    tft.setTextSize(2);
   tft.println("Leitwert");
}



void loop(void)
{
 // Aufruf der Funktion sensors.requestTemperatures()
  // Dadurch werden alle werte abgefragt.
  Serial.print("Abfrage der Temperatur... ");
  sensors.requestTemperatures();
  Serial.println("DONE");

  // Ausgabe der Daten für jeden Sensor
  for(int i=0 ;i<numberOfDevices; i++) {
     float tempC = sensors.getTempCByIndex(i);
     Serial.print("Sensor ");
     Serial.print(i, DEC);
     Serial.print(" hat grad Celsius: ");
     tft.setCursor(30, 140);
       tft.setTextColor(0x04FF);    tft.setTextSize(2);
       tft.print(i, DEC);
     tft.setCursor(50, 140);
       tft.setTextColor(0x04FF);    tft.setTextSize(2);
       tft.print(tempC);
     Serial.println(tempC);
  }
 delay(1000);delay(1000);delay(1000);delay(1000);delay(1000);
}

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).

Gruß Tommy

Wenn ich mir meine Programme ansehe steht da folgendes:
UTFT myGLCD(CTE70,38,39,40,41); // 7 Zoll LCD
das bedeutet das TFT Modul braucht die Pins 38-41.
Du definierst One_Wire auf Pin 39, ich denke da liegt der Fehler.

Das verstehe ich nicht!

Bei mir ist der Pin 39 nur von 1-Wire genutzt - wo soll da was dazwischen funken?

Habe auch in den Libs nichts gefunden, was sich irgendwie widersprechen würde...

Du hast doch dein TFT über ein Shield am Mega angeschlossen oder nicht?
Ich weiss nicht wie das bei dir geschaltet ist.
Jedenfalls werden bei mir die o.g. Pins fürs Shield gebraucht.

Das habe ich schon verstanden.

Allerdings sind die Pins bei mir nicht doppelt belegt - daher wundert es mich ja, dass es nicht funktioniert.

Vor allem, da es gestern mal geklappt hat...

Sieht keiner im Sketch irgend einen Fehler? Kompilieren klappt einwandfrei, nur eben die Funktion dann nicht...

Hi

Was hindert Dich daran, die DS18B20 an einen anderen Pin zu hängen?
Wenn Dir die gefundenen Fehler nicht recht sind, wird's eng mit der Hilfe.

MfG