Hallo Leute
Bin Beginner, nach langem versuchen grieg ichs geschafft 2 DS18B20 anzeigen zu lassen.
Ich habe den Code mit einer float funktion geändert.
Nun habe ich das Problem, dass sich die Temperatur anzeige immer darüber schreibt und nur eine Temp gleichzeitig anzeigt. Diese wird Überschrieben, dass ich keine Zahlen mehr erkennen kann.
und das Celsius zeichen falsch angezeit wird.Verwende dieses Symbol um Code zu posten
#include <MCUFRIEND_kbv.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 30
#define ONE_WIRE_BUS 40
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
#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 BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
MCUFRIEND_kbv tft;
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
// Addresses of 3 DS18B20s
uint8_t Links[8] = { 0x28, 0xE2, 0x9E, 0x83, 0xB1, 0x22, 0x08, 0x98 };
uint8_t Rechts[8] = { 0x28, 0x91, 0x56, 0x62, 0xB1, 0x22, 0x08, 0x83 };
void setup(void)
{
tft.begin();
tft.setRotation(1);
Serial.begin(9600);
sensors.begin();
tft.fillScreen(BLACK); // TFT_YELLOW = Blue - TFT_BLUE = YELLOW - TFT_BLACK = White
tft.setCursor(10, 20); //shift Cursor in Pixel (Collum, Row, Fontsize)
tft.setTextSize(2);
tft.println("Dallas TwoPin_DS18B20");
tft.setCursor(20, 50); //shift Cursor in Pixel (Collum, Row, Fontsize)
tft.print("Inhouse: ");
tft.setCursor(20, 75); //shift Cursor in Pixel (Collum, Row, Fontsize)
tft.setCursor(20, 100);
tft.print("Outhouse: ");
tft.setCursor(20, 120); //shift Cursor in Pixel (Collum, Row, Fontsize)
}
void loop(void)
{
sensors.requestTemperatures();
printTemperature(Links);
printTemperature(Rechts);
delay(1000);
}
void printTemperature(DeviceAddress deviceAddress)
{
float Links = sensors.getTempC(deviceAddress);
float Rechts = sensors.getTempC(deviceAddress);
tft.setCursor(150, 50);
tft.print(Links);
tft.print((char)176);
tft.print("C ");
tft.setCursor(150, 100);
tft.print(Rechts);
tft.print((char)176);
tft.print("C ");
}
Wie kann ich den float Temp anzeige zurückstellen`?
In welche richtung muss ich suchen?
Ich fülle vor dem neu beschreiben mit 0, die lib kennt wohl kein clear(). Bin davon ausgegangen, das die Voreinstellung für den Text background BLACK und forground WHITE ist.
Aber gut, das kann der TO ja noch nachholen
@my_xy_projekt
Soweit werden beide Temperaturen angezeigt und auch nicht überschrieben. jetzt geht es darum das ganze auch zu verstehen und weiter um zu setzten.
Ok, Dann frag was Du wissen willst.
Die wichtigste Entscheidung war, dass ich beide Sensoren jeweils in einem Array betreibe.
Sowohl was die Adressierung angeht, als auch die Auswertung.
Vom Prinzip her könnte man sogar wieder links und rechts verwenden, wenn man der Elemntnummer des Array (0 oder 1) jeweils einen variablennamen zuordnet.
Diese Schreibweise verkürzt den Code und vermeidet Codeduplikate.
Ansonsten ist das eigentlich genau dein Code. Nur das Sprachniveau etwas angehoben