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:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Fehler im Programm
06.11.2014, 09:55 (Dieser Beitrag wurde zuletzt bearbeitet: 06.11.2014 09:57 von Kurt.)
Beitrag #1
Fehler im Programm
Hallo,
muß mal eure Hilfe in Anspruch nehmen. Folgendes Problem.
In meinen Programm soll bei einer Temperatur unter 22 Grad ein Relais anziehen.
Aber auch nur dann, wenn vom Regensensor ein Highsignal anliegt.
Ich habe es mit der Verknüpfung " &&" versucht, aber es klappt nicht.
Bin dankbar für jeden Tipp.
Code:
#include <LiquidCrystal.h>
const int temp = 0;
const int rsensor= 5;
int relaishz = 6;
int rsensorState = 0;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup(){
lcd.begin(16, 2);
pinMode(relaishz, OUTPUT);
pinMode(rsensor,INPUT);
digitalWrite(rsensor, HIGH);

}
void loop()
{
  rsensorState = digitalRead(rsensor);
  int tempReading = analogRead(temp);
  float tempVolts = tempReading * 1.6 / 1024.0;
  float temp = (tempVolts - 0.5) * 100.0;
  rsensorState = digitalRead(rsensor);
if (temp <=22 && rsensor == HIGH)
{
digitalWrite(relaishz,LOW);
lcd.print(" AN ");
}
else
{
}
if (temp >=24 )
{
digitalWrite(relaishz,HIGH);
lcd.print(" AUS ");
}
  //LcdClearLine(1);
  lcd.setCursor(0,0);
  lcd.print("Temp.:");
  lcd.print(temp);
  lcd.write(223);
  lcd.print("C");
  lcd.setCursor(0,1);
  lcd.print("Heizung:");
{
}
delay(1000);            //Wait one second before we do it again
}

// hilfsfunktion zum leeren einer zeile
void LcdClearLine(int r)
{
  lcd.setCursor(0,r);
  for (int i = 0; i < 16; i = i + 1)
  {
    lcd.print("            ");
  }
}

Danke
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2014, 11:28
Beitrag #2
RE: Fehler im Programm
Hi,
rsensor ist immer 5. Du meinst rsensorState.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2014, 12:28
Beitrag #3
RE: Fehler im Programm
Hi Thorsten,
ich steh jetzt auf dem Schlauch.
Was muss ich ändern?

Gruß Bernd
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2014, 12:33
Beitrag #4
RE: Fehler im Programm
Hi,
schau Dir mal diese zwei Zeilen scharf an:
Code:
rsensorState = digitalRead(rsensor);
if (temp <=22 && rsensor == HIGH)
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2014, 13:04
Beitrag #5
RE: Fehler im Programm
Also wenn ich es so mache:
rsensorState = digitalRead(rsensorState);
if (temp <=22 && rsensorState == HIGH)

ändert sich nichts, egal ob High oder Low anliegt.
Der Zustand ist immer "AN".

Bernd
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2014, 17:32
Beitrag #6
RE: Fehler im Programm
Hi,
das Ausschalten hast Du ja auch so programmiert, dass es nur stattfindet wenn temp >= 24, oder?
Wenn Du bei rsensorState == LOW auch abschalten willst, dann musst Du das dem System auch sagen.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.11.2014, 09:50
Beitrag #7
RE: Fehler im Programm
Hi Thorsten,
hab es zum Laufen gebracht. Man lernt nie aus.
So geht es.
[code]

#include <LiquidCrystal.h>
int temp = 0;
int rsensor= 5;
int relaishz = 6;
int rsensorState = 0;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup(){
lcd.begin(16, 2);
pinMode(relaishz, OUTPUT);
pinMode(rsensor,INPUT_PULLUP);
LcdClearLine(1);
}
void loop()
{
rsensorState = digitalRead(rsensor);
int tempReading = analogRead(temp);
float tempVolts = tempReading * 1.6 / 1024.0;
float temp = (tempVolts - 0.5) * 100.0;
if (temp <=22 && rsensorState == HIGH)
{
digitalWrite(relaishz,HIGH);
lcd.print(" AN ");
}
else if (temp <=22 && rsensorState == LOW)
{
digitalWrite(relaishz,LOW);
lcd.print(" AUS");
}
else if (temp >=24 )
{
digitalWrite(relaishz,LOW);
lcd.print(" AUS ");
}
//LcdClearLine(1);
lcd.setCursor(0,0);
lcd.print("Temp.:");
lcd.print(temp);
lcd.write(223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Heizung:");
{
}
delay(500);
}
// hilfsfunktion zum leeren einer zeile
void LcdClearLine(int r)
{
lcd.setCursor(0,r);
for (int i = 0; i < 16; i = i + 1)
{
lcd.print(" ");
}
}
[code]

Danke für die Hilfe
Gruß Bernd
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.11.2014, 18:21
Beitrag #8
RE: Fehler im Programm
Noch ne kleinigkeit zum direkten richtigen Programmieren. Versuch noch das delay aus dem Programm rauszuschmeißen. Dies kannst du wenn du dich an dem Beispiel BlinkwitoutDelay nimmst.

Code:
unsigned long lmillis=0;
unsigned long actmillis=0;
int timems=500;  // Hier deine Intervallzeit die zwischen den druchläufen sein soll

void setup(){
// Dein Setup hier rein
}


void loop(){
actmillis=millis();    // aktuelle Zeit speichern
if (actmillis-lmillis>=timems){   // Aktuelle Zeit - letzter Zeit länger als 500ms
// Hier dann dein Programm das alle 500ms ausgeführt werden soll
}
// Und hier dein Programm das jeden Durchlauf ausgeführt werden soll

lmillis=actmillis;   // Zeit merken für nächsten Durchlauf
}
Damit klemmst du deine CPU nicht im delay fest.
Bei deinem Programm würde es sich anbieten die Displayausgabe in die 500ms Routine zu packen und den Rest in die Loop. So kannst du dein Programm erweitern ohne das du rücksicht auf delay machen musst.

Gruß
DerDani
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  M enue System zeigt Fehler rev.antun 11 252 23.11.2017 12:22
Letzter Beitrag: rev.antun
  Fehler in gleitkomma Berechnung BennIY 5 283 04.11.2017 19:10
Letzter Beitrag: Tommy56
  Suche Hilfe für den Fehler in der Datei Holzwurm56 5 344 01.11.2017 14:26
Letzter Beitrag: Holzwurm56
  Arduino Zumo, Felerhaftes Programm (2) Werner Lage 2 458 18.09.2017 06:51
Letzter Beitrag: Werner Lage
  Arduino Zumo, Felerhaftes Programm ? Werner Lage 1 302 20.06.2017 13:57
Letzter Beitrag: Tommy56
  Compiler Fehler Harti 8 611 16.06.2017 17:51
Letzter Beitrag: Harti
  Fehler bei Zeitmessung Fox 15 762 24.05.2017 09:19
Letzter Beitrag: SkobyMobil
Rainbow Programm mit Tastr unterbrechen Schwinge117 12 931 02.03.2017 21:17
Letzter Beitrag: Tommy56
  Programm Elegoo Smart Robot kit Thorsten_S 3 912 29.01.2017 17:40
Letzter Beitrag: Micha06
  Seltsamer Fehler bei Vergleichsoperation ardu_arne 14 868 22.01.2017 20:35
Letzter Beitrag: Binatone

Gehe zu:


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