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);
}