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
  Problem mit Wire.available() abfrage avoid 1 125 11.01.2018 13:40
Letzter Beitrag: Tommy56
  SerialComInstruments 4 Problem Darstellung Nextero 35 923 15.12.2017 18:51
Letzter Beitrag: ElEspanol
  Problem mit Nema17 und A4988 Philthy 6 285 08.12.2017 12:35
Letzter Beitrag: Tommy56
  Arduino -> Controllino [Problem gelöst] Cyrilsneer 17 915 27.11.2017 18:49
Letzter Beitrag: Franz54
Question Problem beim seriellen Einlesen von RFID-Reader Bezel 5 413 05.11.2017 22:37
Letzter Beitrag: Tommy56
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 657 22.08.2017 15:17
Letzter Beitrag: Tommy56
  Problem mit LSM 303 Snörb 1 407 22.08.2017 14:16
Letzter Beitrag: Snörb
  Problem mit externem Interrupt manfred474 13 1.380 13.08.2017 08:54
Letzter Beitrag: MicroBahner
  Problem mit Klassen GuaAck 4 610 09.08.2017 09:28
Letzter Beitrag: MicroBahner
Question Problem mit TFT Sam217 8 1.003 20.07.2017 21:51
Letzter Beitrag: hotsystems

Gehe zu:


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