INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Temperatur mit DS18S20, Kommastellen
26.03.2015, 20:58
Beitrag #9
RE: Temperatur mit DS18S20, Kommastellen
So, da bin ich auch mal wieder, nach Wochen der Abstinenz.
Bin weitergekommen mit meinem Projekt.
Die Anzeigen im Display (2 verschiedene Meldungen) funktioniert gut. Nun möchte ich aber 2 Display´s parallel laufen lassen, so dass eines welches an einem anderem Ort verbaut wird, das gleiche anzeigt.
Hab jetzt 2 LCD´s über I2C angesteuert und funktioniert auch, allerdings habe ich nur so hinbekommen dass eines die eine Meldung zeigt und das andere Display die zweite Meldung anzeigt.
Wie kann ich lcd1 + lcd2 im Code zusammenfassen das diese parallel das gleiche anzeigen? Habs mit lcd.1,2 lcd1.2 lcd1;2 probiert.
Oder 2 gleiche Adressen für beide Display´s über I2C (PCF8547A) vergeben?
Gruß Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.03.2015, 21:41
Beitrag #10
RE: Temperatur mit DS18S20, Kommastellen
Jo, das geht natürlich auch, warum so kompliziert denken wenn´s auch einfach geht.
Anbei mal meinen Sketch für eine Temperaturüberwachung an meiner Heizung. Bitte nicht lachen, ich denke es geht auch kürzer, aber es funktioniert und ich bin noch in der Lernphase.Shy

2 Probleme möchte ich noch lösen:
1 in diesem Moment, wo eine Anzeige im Display erscheint, werden die Daten nicht aktualisiert, erst bei der nächsten Wechsel der Anzeige. Beide Anzeigen werden jeweils für 5 sec. dargestellt. Geht das auch "Live"? D.h. wenn z.B. sich eine Temperatur ändert dann auch gleich dargestellt wird, bevor das Display wieder wechselt.
2 Ich habe noch keine Lösung gefunden, wie ich aus einer USB-B Schnittstelle Daten auf die USB-B Schnittstelle des Arduinos bringen kann. (B-Buchse auf B-Buchse). Software muß das mit Serial.in oder Serial.read gehen.

.ino  _2_LCD_serial.ino (Größe: 3,99 KB / Downloads: 74)
Gruß Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.03.2015, 15:53
Beitrag #11
RE: Temperatur mit DS18S20, Kommastellen
Hallo Daniel,
den "Live-Betrieb" könnte man erreichen indem man vorhergehende und aktuelle Werte der Sensoren vergleicht und jeweils die passenden Abschnitte auf den Displays anzeigt. Das könnte etwa so aussehen:
Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>

LiquidCrystal_I2C lcd1(0x38,20,4);                                             //Festlegung Adresse I2C an LCD
// LiquidCrystal_I2C lcd1(0x38, 8, POSITIVE);                                           //Festlegung Adresse I2C an LCD
DeviceAddress sensor1 = { 0x28, 0xE0, 0x64, 0x37, 0x6, 0x0, 0x0, 0x26 };       //Sensoradressen
DeviceAddress sensor2 = { 0x28, 0xF2, 0x4A, 0x37, 0x6, 0x0, 0x0, 0x49 };       //Sensoradressen
DeviceAddress sensor3 = { 0x28, 0x36, 0x1F, 0x37, 0x6, 0x0, 0x0, 0x4D };       //Sensoradressen
DeviceAddress sensor4 = { 0x28, 0x2C, 0x37, 0x37, 0x6, 0x0, 0x0, 0x1F };       //Sensoradressen
DeviceAddress sensor5 = { 0x28, 0x20, 0x9E, 0x36, 0x6, 0x0, 0x0, 0x2D };       //Sensoradressen
DeviceAddress sensor6 = { 0x28, 0x22,  0x6, 0x37, 0x6, 0x0, 0x0, 0x45 };       //Sensoradressen
DeviceAddress sensor7 = { 0x28, 0x40, 0xA5, 0x36, 0x6, 0x0, 0x0, 0x1A };       //Sensoradressen
DeviceAddress sensor8 = { 0x28, 0x4B, 0x31, 0x37, 0x6, 0x0, 0x0, 0xC5 };       //Sensoradressen
DeviceAddress sensor9 = { 0x28, 0x11, 0xA1, 0x36, 0x6, 0x0, 0x0, 0x1C };       //Sensoradressen
DeviceAddress sensor10 = { 0x28, 0x86, 0xC0, 0x36, 0x6, 0x0, 0x0, 0xF4 };      //Sensoradressen

OneWire  ds(13);                                                               //Pin an dem die Datenleitung des ds18s20 hängt

DallasTemperature sensors (&ds);
float temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8, temp9, temp10; // aktuelle Werte
float temp1_o, temp2_o, temp3_o, temp4_o, temp5_o, temp6_o, temp7_o, temp8_o, temp9_o, temp10_o; // vorhergehende Werte

void setup()
{
  sensors.begin();
  sensors.setResolution(sensor1, 10);
  sensors.setResolution(sensor2, 10);
  sensors.setResolution(sensor3, 10);
  sensors.setResolution(sensor4, 10);
  sensors.setResolution(sensor5, 10);
  sensors.setResolution(sensor6, 10);
  sensors.setResolution(sensor7, 10);
  sensors.setResolution(sensor8, 10);
  sensors.setResolution(sensor9, 10);
  sensors.setResolution(sensor10, 10);
  // Temp das 1. mal messen
  sensors.requestTemperatures();
  temp1 = sensors.getTempC(sensor1);
  temp1_o = temp1;
  temp2 = sensors.getTempC(sensor2);
  temp2_o = temp2;
  temp3 = sensors.getTempC(sensor3);
  temp3_o = temp3;
  temp4 = sensors.getTempC(sensor4);
  temp4_o = temp4;
  temp5 = sensors.getTempC(sensor5);
  temp5_o = temp5;
  temp6 = sensors.getTempC(sensor6);
  temp6_o = temp6;
  temp7 = sensors.getTempC(sensor7);
  temp7_o = temp7;
  temp8 = sensors.getTempC(sensor8);
  temp8_o = temp8;
  temp9 = sensors.getTempC(sensor9);
  temp9_o = temp9;
  temp10 = sensors.getTempC(sensor10);
  temp10_o = temp10;
}
void loop()
{
  sensors.requestTemperatures();
  temp1 = sensors.getTempC(sensor1);
  temp2 = sensors.getTempC(sensor2);
  temp3 = sensors.getTempC(sensor3);
  temp4 = sensors.getTempC(sensor4);
  temp5 = sensors.getTempC(sensor5);
  temp6 = sensors.getTempC(sensor6);
  temp7 = sensors.getTempC(sensor7);
  temp8 = sensors.getTempC(sensor8);
  temp9 = sensors.getTempC(sensor9);
  temp10 = sensors.getTempC(sensor10);
  if (temp1 != temp1_o || temp2 != temp2_o || temp3 != temp3_o || temp4 != temp4_o || temp5 != temp5_o || temp6 != temp6_o) run_1_6();
  if (temp7 != temp7_o || temp8 != temp8_o || temp9 != temp9_o || temp10 != temp10_o) run_7_10;
}
void run_1_6()
{
  temp1_o = temp1;
  temp2_o = temp2;
  temp3_o = temp3;
  temp4_o = temp4;
  temp5_o = temp5;
  temp6_o = temp6;
  lcd1.init();
  // lcd1.begin(20, 4);
  lcd1.clear();
  lcd1.setCursor(2, 0);
  lcd1.print(F("Puffertemperatur"));
  lcd1.setCursor (0, 1);
  lcd1.print(F("P1 ")); lcd1.print(F("o=")); lcd1.print(temp1, 1); lcd1.write(0xDF); lcd1.print(F("C")); lcd1.print(F(" u=")); lcd1.print(temp2, 1); lcd1.write(0xDF); lcd1.print(F("C"));
  lcd1.setCursor (0, 2);
  lcd1.print(F("P2 ")); lcd1.print(F("o=")); lcd1.print(temp3, 1); lcd1.write(0xDF); lcd1.print(F("C")); lcd1.print(F(" u=")); lcd1.print(temp4, 1); lcd1.write(0xDF); lcd1.print(F("C"));
  lcd1.setCursor (0, 3);
  lcd1.print(F("P3 ")); lcd1.print(F("o=")); lcd1.print(temp5, 1); lcd1.write(0xDF); lcd1.print(F("C")); lcd1.print(F(" u=")); lcd1.print(temp6, 1); lcd1.write(0xDF); lcd1.print(F("C"));
}
void run_7_10()
{
  temp7_o = temp7;
  temp8_o = temp8;
  temp9_o = temp9;
  temp10_o = temp10;
  lcd1.init();
  // lcd1.begin(20, 4);
  lcd1.clear();
  lcd1.setCursor(0, 0);
  lcd1.print(F("     Heizkreis"));
  lcd1.setCursor(0, 1);
  lcd1.print(F("VL ")); lcd1.print(temp7, 1); lcd1.write(0xDF); lcd1.print(F("C")); lcd1.print(F(" RL= ")); lcd1.print(temp8, 1); lcd1.write(0xDF); lcd1.print(F("C"));
  lcd1.setCursor(0, 2);
  lcd1.print(F(" Aussen     Wohnung "));
  lcd1.setCursor(0, 3);
  lcd1.print(temp9, 1); lcd1.write(0xDF); lcd1.print(F("C        ")); lcd1.print(temp10, 1); lcd1.write(0xDF); lcd1.print(F("C"));
}
Die Frage ist wie schnell sich die Werte ändern können. Da in dem Code keine Zeitverzögerung drin ist, kann es evtl. flackern Huh
Musst du testen (ich selbst habe keine Sensoren da) und falls nötige eine Verzögerung einbauen.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.03.2015, 17:23
Beitrag #12
RE: Temperatur mit DS18S20, Kommastellen
Danke mal für die schnelle Antworten. Der Sketch von Ricardo habe ich mal probiert, erst lief es nicht, bis ich noch einen flüchtigen Fehler gefunden habe.

> if (temp1 != temp1_o || temp2 != temp2_o || temp3 != temp3_o || temp4 != temp4_o || temp5 != temp5_o || temp6 != temp6_o) run_1_6();

if (temp7 != temp7_o || temp8 != temp8_o || temp9 != temp9_o || temp10 != temp10_o) run_7_10;<

Klammer hat gefehlt.
Hat sich so ausgewirkt, dass nur der erste void run Befehl ausgeführt wurde.

Allerdings wechselt das Display undefinierbare sec. hin und her. Mal die eine Anzeige länger, mal die andere.
Hab mit Delay probiert, da wird das undefinierbare hin und herschalten lediglich verzögert.
Delay am Ende und am Anfang von void run probiert.
Gruß Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.03.2015, 08:30
Beitrag #13
RE: Temperatur mit DS18S20, Kommastellen
Hallo Daniel,
Zitat:Allerdings wechselt das Display undefinierbare sec. hin und her. Mal die eine Anzeige länger, mal die andere.
Naja, es wechselt so bald sich ein Wert in temp1...temp6 oder temp7...temp10 geändert hat auf den jeweiligen Anzeigenteil. Du hattest ja geschrieben:
Zitat:in diesem Moment, wo eine Anzeige im Display erscheint, werden die Daten nicht aktualisiert, erst bei der nächsten Wechsel der Anzeige. Beide Anzeigen werden jeweils für 5 sec. dargestellt. Geht das auch "Live"? D.h. wenn z.B. sich eine Temperatur ändert dann auch gleich dargestellt wird, bevor das Display wieder wechselt.
Wenn du das so nicht gemeint hast, schreibe mal bitte genau wie/was du es gemeint hast Smile
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.03.2015, 15:36
Beitrag #14
RE: Temperatur mit DS18S20, Kommastellen
Sorry,
ich habe vor, dass eine Anzeige ca. 5-6 sec. stehen bleibt und dann zur nächsten Anzeige wechselt.
In dieser Zeit wo z.B. für 5 sec. <void run_1_6()> angezeigt wird, dann auch die sich ändernde Temperaturwerte anzeigen.

Gruß Daniel

Blush

Bin da noch nicht dahinter gekommen wie das geht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Rainbow Messeinrichtung 6 x Temperatur & Feuchtigkeit JoeDorm 2 40 Heute 12:03
Letzter Beitrag: Tommy56
Question pool temperatur messen... unfug11 4 1.451 06.04.2016 09:11
Letzter Beitrag: unfug11
Sad Temperatur u. feuchtigkeit Webserver+speichern der Temp. u. Feuchti. auf sd Porblem!! TbO92 0 1.885 27.10.2014 10:14
Letzter Beitrag: TbO92
  Gärbox mit fallender Temperatur Kubus 3 1.529 29.09.2014 20:23
Letzter Beitrag: Thorsten Pferdekämper
  Temperatur-Farbwechsler lena 2 1.443 22.05.2014 09:46
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste