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
  Arduino Zumo, Felerhaftes Programm (2) Werner Lage 2 281 Gestern 06:51
Letzter Beitrag: Werner Lage
  Arduino Zumo, Felerhaftes Programm ? Werner Lage 1 242 20.06.2017 13:57
Letzter Beitrag: Tommy56
  Compiler Fehler Harti 8 459 16.06.2017 17:51
Letzter Beitrag: Harti
  Fehler bei Zeitmessung Fox 15 532 24.05.2017 09:19
Letzter Beitrag: SkobyMobil
Rainbow Programm mit Tastr unterbrechen Schwinge117 12 708 02.03.2017 21:17
Letzter Beitrag: Tommy56
  Programm Elegoo Smart Robot kit Thorsten_S 3 715 29.01.2017 17:40
Letzter Beitrag: Micha06
  Seltsamer Fehler bei Vergleichsoperation ardu_arne 14 624 22.01.2017 20:35
Letzter Beitrag: Binatone
  Fehler beim Hochladen steyr 24 1.784 16.12.2016 07:52
Letzter Beitrag: hotsystems
  Fehler in meinem Programm Franz54 7 510 01.12.2016 23:58
Letzter Beitrag: hotsystems
  Fehler im Programmablauf binderj1 14 794 10.10.2016 10:29
Letzter Beitrag: StephanBuerger

Gehe zu:


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