Zum Inhalt springen

Abfragen

    Eine Abfrage prüft, ob z.B. eine Variable einen bestimmten Wert hat. Abfragen können also den Programmablauf steuern.

    if-Abfrage
    Die if-Abfrage prüft, ob die übergebene Bedingung wahr ist. Wenn sie wahr ist, wird der Anweisungsblock durchlaufen, ist sie falsch, kann man einen alternativen Anweisungsblock (else) ausführen lassen.

    if (digitalRead(btnPin)==HIGH) {
      // Anweisungsblock für wahr
      digitalWrite(ledPin,HIGH);
      } else {
      // Anweisungsblock für falsch
      digitalWrite(ledPin,LOW);
    }

    Wenn der Button am btnPin gleich HIGH ist, wird die LED am ledPin eingeschaltet (HIGH), sonst wird sie abgeschaltet (LOW).


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    switch-case-Abfrage
    Will man einen Wert auf verschiedene Zustände prüfen, bietet sich die switch-case-Abfrage an. Die Struktur sieht so aus:

    switch (meineVariable) {
      case 1:
        befehl1;
        break;
      case 2:
        befehl2;
        break;
      default:
        befehl3;
        break;
    }

    Hierbei wird der Block case 1 ausgeführt, wenn meineVariable == 1 ist. Ist sie 2, wird der Block case 2 ausgeführt. Ist sie weder 1 noch 2, wird der Block default ausgeführt. Wichtig sind die break-Befehle. Sie veranlassen das Programm, aus der Abfrage zu springen.

    0 0 votes
    Article Rating
    12 Comments
    Newest
    Oldest Most Voted
    Inline Feedbacks
    Alle Kommentare anzeigen
    7 Jahre zuvor

    Code hab ich keinen für dich. Aber dank ein bisschenn Googlen diesen Beitrag gefunden:

    http://forum.arduino.cc/index.php?topic=116333.0

    Und das Beispiel: https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay

    Grüße, Tobsen

    Ulrich Theile
    7 Jahre zuvor

    Hallo,
    im letzten Jahr habt Ihr mir sehr geholfen mit der do while Abfrage. Nun möchte ich eine Geschwindigkeitsmessung programmieren; wie kann ich einen Timer starten, stoppen und das Ergebnis auf dem Display ausgeben? Programmablaufplan in Basic:
    – Abfrage der Lichtschranke; A=Timer
    – 5 sec. warten
    – Abfrage der Lichtschranke; B=Timer
    – C=B-A
    -print C
    wie macht man das mit dem Arduino Mega?
    Wer kann mir helfen?
    Gruß Uli.

    Pierre
    8 Jahre zuvor

    ich möchte eine Direct Drive led Matrix an meinen aduino anschließen aber ich finde nichts im internet ein bild oder eine erklärung wäre hilfreich

    Sam
    8 Jahre zuvor

    Hallo,
    Als Hobby mache ich öffters Programme auf dem Arduino-Programm, diese liefen bei mir allerdings im einfachsten Bereich ab.
    Letztens hab ich mich dafür entschieden in ein kleines Modellfusballtor Taster rein zu machen und immer wenn ein Ball dagegen kommt eine LED nach der nächstens an zu machen,doch irgendwie mach ich da immer was falsch?!
    Könnte mir vielleicht jemand ein Programm dazu schicken ?
    Denn ich bin mit meinen Nerven schon echt am Ende
    Danke im Vorraus

    9 Jahre zuvor

    Hallo Nico,
    vielen Dank für Deine Antwort auf meine Anfrage zur Modellbahnsteuerung. Nun funktioniert die Abfrage der Gleisbesetztmeldungen. Alleine hätte ich das nicht geschafft! Danke.
    Uli.

    9 Jahre zuvor

    @Herbert Lagger:

    Ob du direkt abfragen kannst, dass ein Taster genau 5 Sekunden lang gedrückt wird, weiß ich nicht.

    Du kannst aber abfragen ob ein Taster gedrückt wurde.

    Schau mal dieses Tutorial an: https://www.arduino.cc/en/Tutorial/DigitalReadSerial

    Und verknüpfe es mit dem Blink Beispiel:
    https://www.arduino.cc/en/Tutorial/Blink

    Ist nicht so schwierig. Muss man eben ausprobieren. :)

    Herbert Lagger
    9 Jahre zuvor

    Hallo !

    Ich habe gerade erst mit dem Arduino UNO angefangen. Ich brauche ein kleines Programm zum Türöffner Steuern.
    Wenn ich die Türklingen 5 sec.gedrückt halte ,soll sich ein Digitaler Ausgang auf High schalten,wenn nicht soll er low bleiben.Ich habe glaube ich einen Knoten im Kopf. Wenn mir jemand helfen könnte währe ich sehr dankbar .

    Nico
    9 Jahre zuvor

    @Ulrich Theile:

    Na das ist eigentlich nicht so schwer, wenn man schon den Programmablaufplan hat.

    In der Setup-Methode müssen die Pins gesetzt werden:

    void setup()
    {
    pinMode(1,OUTPUT);
    pinMode(2,INPUT);
    pinMode(3,OUTPUT);
    }

    In der Loop-Methode wird dann der Programmablauf durchgeführt:

    void loop()
    {
    digitalWrite(1, HIGH);
    delay(3000);
    digitalWrite(1, LOW);

    do
    {
    delay(100);
    } while (digitalRead(2) == LOW);

    digitalWrite(3, HIGH);
    delay(3000);
    digitalWrite(3, LOW);
    }

    Ich hab hier in der Warteschleife für Pin2=HIGH noch ein kleines delay eingebaut, es sollte ausreichen, wenn alle 100 Millisekunden überprüft wird, ob sich der Status geändert hat.

    Viele Grüße

    Nico

    9 Jahre zuvor

    Hallo,
    ich möchte eine Modelleisenbahn mit einem Arduino steuern. Wie programmiere ich eine Abfrage zwischen zwei Fahrbefehle?
    Programmablaufplan:
    Pin 1 High
    3sec, warten
    Pin 1 Low
    Pin 2 Abfrage
    wenn Pin 2 High, dann weiter im Programm
    zu Pin 3, sonst erneut Abfrage von Pin 2
    Pin 3 High
    3 sec. warten
    Pin 3 Low
    zurück zum Anfang.
    Wer kann mir helfen?
    Gruß Uli.

    Claus Kappe
    9 Jahre zuvor

    Hallo,
    ich benötige ein Programm für einen Arduino Nano.
    Dabei möchte ich einen Filmprojektor steuern.
    Über eine seperate Elektronik erhalte ich von einem Videosignal ein Rechtecksignal von 25 Hz, gleichfalls erhalte ich pro Filmbild ein Lichtschrankensignal. Beide Signale müssen synchronisiert werden, damit auch die Lichtschranke mit 25 Hz getaktet wird. Die Ansteuerung des Motors erfolgt über ein PWM Signal des Nano, der wiederum eine Pololu Steuerungseinheit ansteuert. (36/9)
    Das Lichtschrankensignal liegt an Pin 2
    Das Videosignal von 25 Hz an Pin 3
    Als Ausgang zum Pololu liegt an Pin 5.
    Ziel des Programmes ist 8mm Schmalfilm auf Video zu überspielen, dabei muss eine genaue Frequenz von 25 Bildern pro Sekunde sein um ein Flakkern der Filmbilder auszuschließen.
    Für eine Hilfe wäre ich dankbar.