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 SD Card Library BennIY 4 186 06.10.2016 18:38
Letzter Beitrag: Bitklopfer
  Problem mit SD.remove Eichner 6 210 22.08.2016 19:42
Letzter Beitrag: Eichner
  4x16 Tastermatrix Problem Michel 16 832 14.07.2016 10:02
Letzter Beitrag: StephanBuerger
  Problem mit Delay und Millis funnyzocker 1 453 26.06.2016 09:54
Letzter Beitrag: hotsystems
  Problem mit ESP8266 und EMail senden torsten_156 1 593 13.06.2016 21:14
Letzter Beitrag: torsten_156
  ESP8266_01 flashen - Problem torsten_156 12 1.040 30.05.2016 20:12
Letzter Beitrag: torsten_156
  Hardwareserial/Softserial: Problem mit Superklasse tuxedo0801 10 474 19.05.2016 12:25
Letzter Beitrag: amithlon
  ESP8266 HTML Problem arduino_weatherstation 1 491 25.04.2016 21:52
Letzter Beitrag: rkuehle
  Problem mit OLED 0.96" Display torsten_156 3 534 03.04.2016 15:10
Letzter Beitrag: hotsystems
  Problem: SDFat - Das Ende einer Datei finden und Schleife beenden MartinK 4 486 01.04.2016 05:49
Letzter Beitrag: MartinK

Gehe zu:


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