Hallo Zusammen
vor einiger Zeit habe ich einen Sketch geschrieben der meine thermische Solaranlage steuert.
Soweit funktioniert dieser auch gut . Doch da mir nun die Pins ausgehen möchte ich die LVD-Ausgabe auf I²C umstellen.
Den Sketch habe ich auch schon angepasst ( siehe unten ).
Doch ieider spuckt mir die IDE noch einige Fehler aus.
Nämlich:invalid conversion from const char* to unit8_t
initialysing argument 1 of virtual size_t LiquidCrystal_I2C :: write(unit8_t)
Das gilt für die unterstrichenen Zeilen (
/*
Differenztemperatursteuerung Sonnenkolektor mit 1XPT100 im Kollektor
1XDS18B20 im Speicher 1
1XDS18B20 im Speicher 2
*/
// Laden der Libary:
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <Wire.h>
#include <DallasTemperature.h>
LiquidCrystal_I2C lcd(0x27,20,4);
//
#define ONE_WIRE_BUS A3
///char buffer[20] = ""; // Speicherbereich für Datenkonvertierung
OneWire oneWire(ONE_WIRE_BUS); // Library für Datenleitung des Tempatursensors Dallas DS18xx
DallasTemperature sensors(&oneWire);
//die Variablen deklarieren
float tempK;
float tempS1;
float tempS2;
int tempPin1 = 1; //Hier ist der analoge Eingang der Temperaturproportionalen Spannung (0-5V)
int SpeichertempPin1 = A3; //Temperaturdaten der Speichersensoren werden an Analogpin3 angeschlossen
int Pumpe1 = 13;
int Pumpe2 = 12;
int DifferenztemperaturS1 = 0; //Hier nichts eingeben
int DifferenztemperaturS2 = 0; //Hier nichts eingeben
int Schalttemperatur = 14; //Hier die Schalttemperatur der Differenz Kolektor -> Speicher, bei der die Pumpe gestartet wird, eingeben
int SpeicherTempMax = 85; //Hier die Maxtemperatur des Speichers, bei der die Pumpe ausgeschaltet wird und eine Fehlermeldung ausgegebeb wird ( muss quittiert werden ) eingeben
int KolektorTempMax = 130; //Hier die Maxtemperatur des Kolektors, bei der die Pumpe ausgeschaltet wird und eine Fehlermeldung ausgegebeb wird ( muss quittiert werden ) eingeben
int KolektorTempMaxHysterese = 2; //Hier die Hysterese der Ausschaltemperatur des Kolektors, bei der die Pumpe wieder eingeschaltet wird, eingeben
int SpeicherTempUnplausibel = 8 ; //Unter 8°C ist Meßwert im Speicher unplausibel
int TempSpeicher35 = 35; //Dient für die Stufenbestimmung
int TempSpeicher50 = 50; //Dient für die Stufenbestimmung
int TempSpeicher75 = 75; //Dient für die Stufenbestimmung
int TempSpeicher85 = 85; //Dient für die Stufenbestimmung
int Stufe; //Für die Stufenweiterverarbeitung
int StufeSpeicher1; //Für die Stufenweiterverarbeitung
int SicherheitSpeicher1iO; //Für die Stufenweiterverarbeitung
int StufeSpeicher2; //Für die Stufenweiterverarbeitung
int SicherheitSpeicher2iO; //Für die Stufenweiterverarbeitung
int FehlereldungSpeicher1MaxVariable = 0; //zum speichern des Fehlers auch wenn die Fehlerursache wieder verschwindet
int FehlereldungSpeicher2MaxVariable = 0; //zum speichern des Fehlers auch wenn die Fehlerursache wieder verschwindet
int FehlereldungSpeicher1UnplausibelVariable = 0; //zum speichern des Fehlers auch wenn die Fehlerursache wieder verschwindet
int FehlereldungSpeicher2UnplausibelVariable = 0; //zum speichern des Fehlers auch wenn die Fehlerursache wieder verschwindet
#define ONE_WIRE_BUS A3 // Datendraht an Pin A3
//Achtung die jeweilige Adresse des nicht angeschlossenen Sensors deaktivieren
//DeviceAddress SensorS1 = { 0x28, 0xB2, 0x4B, 0xA1, 0x03, 0x00, 0x00, 0x2C }; //Sensor 1 Experimentier Anschluss
DeviceAddress SensorS1 = { 0x28, 0x27, 0xB0, 0xC0, 0x03, 0x00, 0x00, 0xBF }; //Sensor 1 im Speicher 1
//DeviceAddress SensorS2 = { 0x28, 0xF2, 0x75, 0xA1, 0x03, 0x00, 0x00, 0x7F }; //Sensor 2 Experimentier Anschluss
DeviceAddress SensorS2 = { 0x28, 0x9B, 0xFC, 0x8B, 0x03, 0x00, 0x00, 0x79 }; //Sensor 2 im Speicher 2
void setup(){
lcd.init();
byte addr[8];
Serial.begin(9600);
sensors.begin();
sensors.setResolution(SensorS1, 10); //Die Auflösung des DS18B20-Sensors heraufsetzen
sensors.setResolution(SensorS2, 10); //Die Auflösung des DS18B20-Sensors heraufsetzen
pinMode (Pumpe1, OUTPUT);
pinMode (Pumpe2, OUTPUT);
}
void loop(){
//Start Abfrage DS18B20
sensors.requestTemperatures();
//Temperaturen DS18B20 in Variable ablegen
float tempS1 = sensors.getTempC(SensorS1); //zwischenspeichern in Variable tempS1
float tempS2 = sensors.getTempC(SensorS2); //zwischenspeichern in Variable tempS2
sensors.requestTemperatures();
lcd.begin(20, 4);//LCD hat 20 Zeichen und 4 Spalten
}
Den Sketch musste ich leider einkürtzen.
Hat das eventuell mit der metode die Texte ins LCD zu schreiben zu tun ?
Muss ich da eventuell eine andere Technik anwenden?
Vielen Dank für Eure Hilfe Rudi