Go Down

Topic: Mehrere Buttons - if/else (Read 1 time) previous topic - next topic

jandresen



Kann das auch noch etwas anderes bedeuten? Ich finde da keine Klammer zu viel...

Code: [Select]
// *****Arduino Getraenkespender*****

#include <SPI.h>
#include <MFRC522.h>
int pumpendauer = 2500;
int LEDblink    = 500;
//Schalter für Getraenk Wunsch -> Input für Arduino
#define Getraenk1 8
#define Getraenk2 7
#define Getraenk3 3
// LEDs RFID
#define RFIDright 4
#define RFIDwaiting 5
#define RFIDwrong 6
// Beleuchtung - Bechereinstellung
#define BecherLED 0
//Schalter LEDs (GetraenkxPumpenLED)
#define G1PumpLED 14
#define G2PumpLED 15
#define G3PumpLED 16
bool isRFID = false; // <---- Hatte ich anfangs schon so, kam mir aber komisch vor, daher hab ich es dann unten hingeschrieben.
//Pumpendeklarierung
#define PumpG1 17
#define PumpG2 18
#define PumpG3 19
//**RFID**
long erlaubteKarten[] = { 1011520, 2492530, 171762080, 2467860, 363370 };
byte erlaubteKartenCount = 5;
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  pinMode(Getraenk1, INPUT_PULLUP);
  pinMode(Getraenk2, INPUT_PULLUP);
  pinMode(Getraenk3, INPUT_PULLUP);
  pinMode(RFIDright, OUTPUT);
  pinMode(RFIDwaiting, OUTPUT);
  pinMode(RFIDwrong, OUTPUT);
  pinMode(G1PumpLED, OUTPUT);
  pinMode(G2PumpLED, OUTPUT);
  pinMode(G3PumpLED, OUTPUT);
  pinMode(PumpG1, OUTPUT);
  pinMode(PumpG2, OUTPUT);
  pinMode(PumpG3, OUTPUT);
  pinMode(BecherLED, OUTPUT);
  //Standardmäßige "HIGH-Schaltung"//
  digitalWrite(RFIDwaiting, HIGH);
}

void loop() {
  //RFID-Abfrage beginn
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }

  long code = 0;

  for (byte i = 0; i < mfrc522.uid.size; i++) {
    code = ((code + mfrc522.uid.uidByte[i]) * 10);
  }

  Serial.print(F("Erkannte Kartennummer:")); // Key wird gelesen
  Serial.print(code);

  if(PruefeKartenberechtigung(code) == true) { // wenn key richtig,
    Serial.println(F(" [BERECHTIGT]"));
                                               //RFID-Abfrage ende (Berechtigt / Buttons werden "freigegeben")
    digitalWrite(RFIDwaiting, LOW);
    digitalWrite(RFIDright, HIGH);
    digitalWrite(G1PumpLED, HIGH);
    digitalWrite(G2PumpLED, HIGH);
    digitalWrite(G3PumpLED, HIGH);
    isRFID = true;
    // beginn buttons
  }
  else
  {
    Serial.println(F(" [NICHT BERECHTIGT]"));
    digitalWrite(RFIDwrong, HIGH);
    delay(2000);
    digitalWrite(RFIDwrong, LOW);
  }


  if (isRFID)
  {
    if (digitalRead(Getraenk1) == LOW) // erster Button zur Getränke-Wahl
    {
      Serial.println("Getraenk 1...");
      isRFID = false;
    }

    if (digitalRead(Getraenk2) == LOW) // zweiter Button zur Wahl
    {
      Serial.println("Getraenk 2...");
      isRFID = false;
    }

    if (digitalRead(Getraenk3) == LOW) // dritter Button zur Wahl
    {
      Serial.println("Getraenk 3...");
      isRFID = false;
    }
  }

else
{
    Serial.println(F(" [NICHT BERECHTIGT]"));
    digitalWrite(RFIDwrong, HIGH);
    delay(2000);
    digitalWrite(RFIDwrong, LOW);
  }
 
 
 
boolean PruefeKartenberechtigung(long KartenUUID) {
  boolean erlaubt = false;
 
  for(int i=0; i < erlaubteKartenCount; i++) {
    if(erlaubteKarten[i] = KartenUUID) {
       erlaubt = true;
    }
  }
  return erlaubt;
}

agmue

Ich finde da keine Klammer zu viel...
Ich schon, wenn ich in der IDE <Strg>+t zur Formatierung nutze.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

jandresen

Ich schon, wenn ich in der IDE <Strg>+t zur Formatierung nutze.

meinst du eine vor else? Bitte mach´s nicht zu spannend:D Die Pumpen sind heute gekommen und würde dann mal bauen, wenns heute läuft.. :)
Am besten sag mir gleich, wie ich sehen kann, wo eine zu viel oder zu wenig ist... ich habe einfach jede angeklickt und geschaut wo sie geschlossen wird, aber das macht überall sinn..

mfg

agmue

Ich habe Deine Bibliotheken nicht, daher kann ich keine Compilermeldungen zeigen. Ich hoffe, meine Kommentare helfen Dir:

Code: [Select]
    if (digitalRead(Getraenk3) == LOW) // dritter Button zur Wahl
    {
      Serial.println("Getraenk 3...");
      isRFID = false;
    }
  }
} // hier wird loop geschlossen, was nicht stimmen kann
else
{ // öfnende Klammer von else
  Serial.println(F(" [NICHT BERECHTIGT]"));
  digitalWrite(RFIDwrong, HIGH);
  delay(2000);
  digitalWrite(RFIDwrong, LOW);
} // schließende Klammer von else
// hier fehlt eine Klammer
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

jandresen

Ich habe Deine Bibliotheken nicht, daher kann ich keine Compilermeldungen zeigen. Ich hoffe, meine Kommentare helfen Dir:

Code: [Select]
    if (digitalRead(Getraenk3) == LOW) // dritter Button zur Wahl
    {
      Serial.println("Getraenk 3...");
      isRFID = false;
    }
  }
} // hier wird loop geschlossen, was nicht stimmen kann
else
{ // öfnende Klammer von else
  Serial.println(F(" [NICHT BERECHTIGT]"));
  digitalWrite(RFIDwrong, HIGH);
  delay(2000);
  digitalWrite(RFIDwrong, LOW);
} // schließende Klammer von else
// hier fehlt eine Klammer

Hat´s definitiv.
Danke.

Go Up