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
  Hilfe bei einen kleinen Programm FPV 9 811 11.03.2018 20:42
Letzter Beitrag: Tommy56
  Hilfe bei diesen Fehler MrMagoo 22 914 06.02.2018 20:03
Letzter Beitrag: hotsystems
  Programm-Code für 4 Schrittmotoren Philipp92 18 1.263 27.01.2018 12:10
Letzter Beitrag: Tommy56
  <RCReceive.h> Fehler do1xxy 7 426 13.01.2018 13:21
Letzter Beitrag: do1xxy
  Arduino zu MySQL via Wifi Fehler beim compilieren Franzel007 21 1.049 05.01.2018 20:24
Letzter Beitrag: Tommy56
  Neuling Fehler beim Kompilieren guenni71 6 788 26.11.2017 16:48
Letzter Beitrag: hotsystems
  M enue System zeigt Fehler rev.antun 11 906 23.11.2017 12:22
Letzter Beitrag: rev.antun
  Fehler in gleitkomma Berechnung BennIY 5 533 04.11.2017 19:10
Letzter Beitrag: Tommy56
  Suche Hilfe für den Fehler in der Datei Holzwurm56 5 574 01.11.2017 14:26
Letzter Beitrag: Holzwurm56
  Arduino Zumo, Felerhaftes Programm (2) Werner Lage 2 604 18.09.2017 06:51
Letzter Beitrag: Werner Lage

Gehe zu:


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