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
if else Problem
06.06.2015, 22:41
Beitrag #1
if else Problem
irgendwie hab ich 'nen Denkfehler, nur weiß ich nicht wo
Ich möchte erreichen, daß wenn ein Eingang auf HIGH liegt ein Programmteil ausgeführt wird und wenn er nicht auf HIGH liegt, ein anderer Programmteil ausgeführt wird. Mein Problem ist nun, daß immer der Programmteil ausgeführt wird, welcher eigentlich nur ausgeführt werden soll, wenn dieser Eingang LOW-Pegel führt, egal ob dieser Eingang nun LOW oder HIGH führt

Code:
int taktPin = 0;
int speicherPin = 1;
int datenPin = 2;
int Din[] = {3, 4, 5, 6, 7, 8,};
int buttonPin = 10;
int TWert[] = {1, 2, 4, 8, 16, 32};
int Taste = 0;
int umlaufPin = 9;
unsigned long previousMillis = 0;
unsigned long interval = 5000;

int buttonState;
int lastButtonState = LOW;
long lastDebounceTime = 0;
long debounceDelay = 100;

void setup() {
  pinMode(taktPin, OUTPUT);
  pinMode(speicherPin, OUTPUT);
  pinMode(datenPin, OUTPUT);
  pinMode(buttonPin, INPUT);
  pinMode(umlaufPin, INPUT);
  for (int i = 0; i < 6; i++)
  {
    pinMode (Din[i], INPUT);
  }
  resetPins();
  schreibeDaten(0b000000000001000000000001);
}
void loop()
{
  if (umlaufPin == HIGH)
  {
    Taste = 0;
    if (millis() - previousMillis > interval)
    {
      previousMillis = millis();
      Taste ++ ;
      if (Taste == 64)
      {
        Taste = 0;
      }
      TastStatus();
    }
  }
  else
  {
  int reading = digitalRead(buttonPin);
  if (reading != lastButtonState)
  {
    lastDebounceTime = millis();
  }
  if ((millis() -  lastDebounceTime) > debounceDelay)
    {
    if (reading != buttonState)
      {
      buttonState = reading;
      if (buttonState == HIGH)
        {
          Taste = 0;
          AusgangSchalten();
        }
      }
    }
  lastButtonState = reading;
  }
}

es wird immer nur else Ausgeführt egal ob "umlaufPin" HIGH oder LOW ist.
Huh
Wo ist da nun mein Denkfehler?
Für 'nen Hinweis wäre ich dankbar!
Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.06.2015, 23:34
Beitrag #2
RE: if else Problem
(06.06.2015 22:41)frank2000 schrieb:  irgendwie hab ich 'nen Denkfehler, nur ...

Ich sehe da keinen Denkfehler, sondern dass umlaufPin am Anfang auf 9 gesetzt wird und dass es keine Abfrage gibt, wie der Status von umlaufPin denn überhaupt sein soll.

Was fehlt, ist etwas wie:

if (digitalRead(umlaufPin)==HIGH)
{
...
}
else
{
...
}

Außerdem setzt Du Klammern nicht einheitlich (meiner Erfahrung nach die Nummer 1 aller Fehler).

Gruß

Gregor
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.06.2015, 08:00
Beitrag #3
RE: if else Problem
Da fällt es mir wie Schuppen von den Augen Wink
Danke!!!
if (digitalread(umlaufPin)==HIGH) und nicht
if (umlaufPin==HIGH)
Der Syntaxfehler war mein Denkfehler.
Klammern hab ich, denke ich, richtig gesetzt, oder wo meinst du, habe ich 'nen Klammerfehler?
7 x if + 1 x else = 8 Klammern auf -> "{" und diese dann wieder zu -> "}"

Grüße
Frank
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.06.2015, 13:24 (Dieser Beitrag wurde zuletzt bearbeitet: 07.06.2015 14:56 von gregors.)
Beitrag #4
RE: if else Problem
(07.06.2015 08:00)frank2000 schrieb:  Klammern hab ich, denke ich, richtig gesetzt, oder wo meinst du, habe ich 'nen Klammerfehler?

Was ich meine ist z. B., dass Du die öffnende Klammer mal in derselben Zeile hast, mal in der nächsten Zeile. Also mal

if(...) {
}

und mal

if(...)
{
}

Mit der ersten Variante spart man zwar eine Zeile, bei der zweiten kann man IMO aber besser erkennen, wo ein Block anfängt und aufhört. Ich habe eine Zeit lang die erste Variante benutzt, habe mir dann aber die zweite Variante angewöhnt, weil sie eben besser zu lesen ist (finde ich).

Grundsätzlich würde ich ein Programm, das funktioniert, auf solche „Schönheiten“ kontrollieren und es so überarbeiten, dass es gut zu lesen ist und „schön“ aussieht. Das ist zwar lästig, aber damit kommt man weiter.

Gruß

Gregor
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.06.2015, 15:01
Beitrag #5
RE: if else Problem
Noch ein Nachtrag:

Verwende Versionsnummern. Wenn ein Programm wie beabsichtigt funktioniert, wird das Version 1.0

Bevor Du dann etwas daran änderst, kopierst Du es und machst es zur Version 1.1. Auf diese Weise kannst Du jederzeit zu einer funktionierenden Version zurückkehren.

Versionierung habe ich lange Zeit für Sesselpuperkram gehalten, bis mir jemand gesagt hat, dass Versionierung ein Merkmal ernsthafter Arbeit ist. „Ernsthaft“ und „seriös“ sind übrigens Synonyme.

Schon wieder ‘n Gruß

Gregor
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 277 22.08.2017 15:17
Letzter Beitrag: Tommy56
  Problem mit LSM 303 Snörb 1 204 22.08.2017 14:16
Letzter Beitrag: Snörb
  Problem mit externem Interrupt manfred474 13 842 13.08.2017 08:54
Letzter Beitrag: MicroBahner
  Problem mit Klassen GuaAck 4 327 09.08.2017 09:28
Letzter Beitrag: MicroBahner
Question Problem mit TFT Sam217 8 632 20.07.2017 21:51
Letzter Beitrag: hotsystems
  Problem FastLED fliege_m 3 402 16.07.2017 16:56
Letzter Beitrag: Tommy56
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 1.226 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt
  Smart Home Webserver Basic Authentication Problem Osotastic 21 1.154 20.02.2017 18:00
Letzter Beitrag: Tommy56
  Problem mit Sketch senden an Uno feuerwehr 5 906 31.01.2017 20:41
Letzter Beitrag: Tommy56
  Beim Hochladen USB Problem Nils 10 1.333 29.12.2016 21:05
Letzter Beitrag: renid55

Gehe zu:


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